I think no body reading this blog need an introduction to SSH, the standard of remote access terminal since the end of the 90’s. We all know and love this protocol, and its main implementation
openssh. But sometimes SSH strict and clean design can be a pain in the ass. During my on-call duty i sometime have no other choice than to work using only a poor 3G/EDGE mobile access. High latency and intermittent connectivity don’t play well with SSH. Even with a GNU
screen session on the remote server that never an enjoyable moment.
It’s in such situations that a tool like mosh become interesting.
What’s Mosh ?
Mosh stand for Mobile Shell. Like SSH that a remote-terminal protocol, but designed with mobile access in mind. It allows roaming, support intermittent connectivity, predictive echoing and local buffering for line typing/editing/deleting (yep
openssh waits for the server’s reply before showing you your own typing, now you understand the typing latency). All of these features make it way more convenient to use on a high latency and/or unreliable links than a standard SSH session.
Mosh need to be installed on both the client and the server. For Debian, there is only one package simply call
mosh. It’s available in the official repository since Debian Wheezy.
It’s much simpler than what you think. Just type:
mosh command will take care of everything. First it will log you using the
ssh command, then start the
mosh-daemon on the remote server. After that it close the
ssh session and reconnect you to the
mosh one. Note that by default the
mosh-daemon chose a random UDP port between 60000 and 61000. If like me, you’re not a fan of subnet opening, you can use the
-p parameter to force a specific port of your choice.