Mosh, the abbreviation of "mobile shell", is a rising remote terminal application designed to provide better connectivity and user experience than SSH-based terminal applications.
When talking about remote server administration technologies, SSH obviously has its enduring popularity in open source community. Nevertheless, in poor network conditions, like cellular, roaming, Wi-Fi, and long-distance links, SSH connections are liable to get dysfunctional, making people suffer from continual connection timing out or unresponsiveness.
With various network conditions in mind, Mosh has made many improvements over SSH, including but not limited to: choosing UDP over TCP to be constructed on, intelligent local echo, and lowering bandwidth usage. Each of these efforts make Mosh an excellent supplement for SSH.
In the following sections, I will demonstrate how to install Mosh on a CentOS 7 x64 server and a Chrome browser client, along with how to use the Mosh Chrome client to connect to a remote server.
To get hands-on experiences from this article, you need to deploy a Vultr CentOS 7 x64 server instance from scratch and log in as a non-root user with sudo permissions. Instructions for other OSes may vary.
yum, you can easily install Mosh onto your CentOS 7 server:
sudo yum update -y sudo yum install mosh
sudo firewall-cmd --zone=public --permanent --add-port=60000-61000/udp
To use Mosh to manage you remote server, you need to install the Mosh program on your local machine as well. Here, I will install Mosh on a Chrome browser as an example.
Visit the page of Mosh on the Chrome web store from within your Chrome web browser. Click the "ADD TO CHROME" button on the upper-right corner to install it.
Launch Mosh from the Chrome app directory to pop up the log in window.
As you see, in the default SSH mode, you can use the same credentials as SSH to setup Mosh connections. Both password and SSH-key-based authentications are available.
Besides, in the "remote command" field, you can input some commands that you want to execute right after the connection. For example, you can input
tmux attach-session to resume your
tmux session automatically after connecting.
As for the "Mosh server command" field, you can leave it blank in normal conditions. For now, you don't need to start Mosh with different arguments.
After logging in, you can use Mosh to execute commands just like using any another SSH remote terminal application, except that remote server's response in Mosh is faster and smoother, especially in poor network conditions.
The most distinguishable feature of Mosh would be the underlines of your latest input, which denotes that Mosh has intelligently predicted the remote terminal's state before getting a response from your long-distance server. These underlines will disappear after both ends' states are synchronized. You no longer need to wait for remote server's response before you can keep on input smoothly.
I recommend you use Mosh with
tmux or another similar tool at the same time because you will need such a tool to reserve previous output which is no longer in Mosh's terminal window. For acceleration purposes, Mosh does not retain scrollback output.