Coder Social home page Coder Social logo

elliotnash / musht Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 1.0 104 KB

a mosh client wrapper written in rust with support for domain port records.

License: GNU General Public License v3.0

Rust 94.62% Shell 5.38%
rust srv-records srv ssh mosh ssh-client mosh-client txt wrapper linux

musht's Introduction

Musht

About

Musht is a simple wrapper for the mosh client written in rust. Its main goal is to provide support for loading port information from dns records, but also features a few other tweaks. Musht does not need to be installed on the server, and will work just fine with a standard mosh install, but to take full advantage of it's features you will need a domain and the ability to configure dns records.

Features

Current

  • Resolve ports from txt records, allowing both ssh ports and mosh ports to be stored in the domain

  • allow ssh ports to be passed with [user]@host:[port] syntax instead of requiring ssh ports to be passed as an ssh argument

Planned

  • fallback to ssh if server doesn't have/can't start mosh

  • if tmux is installed and configured, automatically enable support for scrolling / history

Installation

At this time, no prebuilt binaries are published, so you'll need to compile them yourself.

First, make sure you have rust installed. The recommended way to this is through rustup, but there are alternate ways if you would like better integration with your package manager.

You will also need to make sure you've added $HOME/.cargo/bin to your path.

Musht also requires mosh to run, so make sure you have it installed.

From here there are two installation methods. If you're not sure which one to pick, follow the install script method.

Install Script

  1. clone the repository git clone https://github.com/elliotnash/musht.git

  2. enter musht directory cd musht

  3. make install script executable chmod 777 *install.sh

  4. run install ./install.sh

Manual Install

the install script edits your .bashrc or .zshrc, so if you would like complete control over the installation, follow this

  1. clone the repository git clone https://github.com/elliotnash/musht.git

  2. enter musht directory cd musht

  3. build and install binary to ~/.cargo/bin cargo install --force --path .

  4. to enable completions, setup complete -C __musht_completions musht to be run each time your shell starts (etc in your .bashrc or .zshrc)

Dns Setup

To take adventage of musht's dns resolving, you'll need to have a record like an a, aaaa, or cname pointing to your servers ip, and you'll also need a txt record with the same name with a value like this, replacing the ports with the ports you want mosh to use.

{"ssh_port": "22", "mosh_ports": "60000:61000"}

ssh_port must be a single port, wheras mosh_ports should be a port range. mosh_ports can be set to a single port, but it is highly discouraged as each mosh connection runs on a seperate port, and a single port would only allow one simultaneous connection

Uninstallation

run ./uninstall.sh from the git directory

License

Musht is licensed under GPL-3.0, see LICENSE

musht's People

Contributors

elliotnash avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

laurentfough

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.