Mosh: Shell for Users on the Move

Productivity Sauce

Sep 14, 2012 GMT

Dmitri Popov

The ability to connect and control remote machines via SSH is a boon for users on the move, but an unreliable and slow Internet connection can turn an SSH session into an exercise in frustration. Enter Mosh, a mobile shell that works wonders even on a shaky and anemic Internet connection. This tool offers several features designed to deal with challenges posed by unreliable Internet connections. For starters, Mosh provides a mechanism for handling dropped connections. This means, among other things, that when you put your machine to sleep and wake it up later, Mosh resumes the connection. In addition to that, the tool supports connection roaming, which can come in handy when you hop from one type of connection (e.g., Wi-Fi) to another (e.g., Ethernet).

Deploying Mosh isn't particularly difficult. The tool is available in the software repositories of many popular Linux distributions, so you can install it using your distro's package manager. Alternatively, you can compile the software from source. You have to install Mosh on both a remote host and a client. Mosh uses SSH to log in a user to the remote host. Once the user is logged in, Mosh uses a UDP connection on a port between 60000 and 61000. In practical terms, this means that the remote host must have an SSH server up and running, and you have to configure SSH and UDP port forwarding on your router.

Using Mosh is as easy as it gets. On the client machine, run the mosh user@remotehost command (replace user and remotehost with the actual user name and IP address or domain name of the remote host). If you are using an Android device to connect and control remote hosts, you'll be pleased to learn that the tweaked version of the IRSSI ConnectBot app provides support for Mosh.