Ever since 1995 SSH has been a stable workhorse for anyone dealing with Linux and Unix hosts and even Windows. There is good reason for this. SSH has a number of powerful features that let you exploit its capabilities. You can, for instance, set up a quick and dirty VPN of sorts for forwarding your traffic over a secure tunnel to another machine. SSH can also be used to transfer files, which is enormously useful in itself, but other programs like rsync add onto this functionality and make syncing directories, for instance, be nearly magical. All this while maintaining the security of default AES ciphers over what just might be the most secure network protocol in wide use.
For all its great strengths, SSH does have a few weaknesses. Computer scientists have solved a few of them by adding on to the protocol. The HPN-SSH additions solved some buffer and SMP problems that were holding back SSH from its true potential in terms of transferring files. More recently, MOSH has come along to solve the issues pertaining to interactivity performance and roaming capabilities. The vagaries of modern life mean that we often have to make do with administering machines over wireless or unstable connections. With old-school SSH, any sort of interference in the line would mean you would have to re-establish your connection. This is a particular annoyance for me on my laptop, for example. Suspending and resuming interrupts the network connection, necessitating a handshake to re-establish my broken pipe. If I connect with MOSH, the terminal will simply try to re-establish a connection on its own, firing off UDP packets that it doesn’t need to keep track of in terms of the acks that TCP would traditionally necessitate. It simply waits for the latest data to paint the terminal. Other neat features include its increased interactivity. Managing my European machines from the Western US used to have noticeable lag. While we can’t change the speed of light, MOSH does a great job of making my terminal sessions much more responsive to input. Also, interrupt sequences are non-blocking. This means that you can make a mistake and, for instance, cat out a huge file. At any time you can Ctrl^c your way out of it. Without MOSH, you may have been stuck waiting for that scrolling output to finish. MOSH was developed by some awesome M.I.T. researchers. You can watch them talk about MOSH below:
If you find yourself re-connecting your SSH sessions all too often, you might want to check it out.