【51CTO.com快译】如果您在公司内使用多个无线或有线连接,又发觉自己要在园区内走动以履行管理职责,会遇到这种情况:您建立了一条SSH连接,但从一个网络漫游到另一个。出现这种情况时,您的安全外壳连接会断掉。或者也许您的单条网络连接并不总是最可靠的?如果您在执行的管理任务不是很重要,那没什么。如果您在执行重要的任务,这条连接又断掉,会发生什么?
您不想那样,这就是为什么应该使用MOSH之类的工具。MOSH的全称是移动外壳(Mobile Shell),让您可以获得持久性的SSH连接,即使更改网络或连接暂时中断。更棒的是,MOSH的使用与SSH几乎一样,至少从用户的角度来看是这样。在底层,MOSH通过SSH让用户登录,然后在60000至61000之间的UDP端口上启动连接,以保持连接持久性。
不妨安装MOSH,看看其用法。
您需要什么?
MOSH适用于Linux、macOS、Windows、Android和iOS。您必须在服务器和客户端上都安装MOSH软件包。我将用基于Ubuntu的Linux发行版来演示两端。如果用户使用MacOS,确保从MOSH下载页面下载二进制安装程序。如果用户使用Windows,没有原生软件包,因此您必须使用MOSH for Chrome。
如何安装MOSH?
可以在我的发行版标准存储库中找到MOSH。要在基于Ubuntu的发行版上安装MOSH,命令将是:
- sudo apt-get install mosh -y
如果您使用基于Red Hat的Linux发行版,命令将是:
- sudo dnf install mosh -y
确保在客户端和服务器上都安装了MOSH。
如何使用MOSH?
当然,这假设您已经可以使用SSH建立从客户端到服务器的连接。在这种情况下,您可以使用MOSH来建立该连接,如下所示:
- mosh USER@SERVER
其中USER是远程用户名,SERVER是服务器的IP地址或域。
如果由于某种原因需要使用不同的UDP端口,命令将是:
- mosh -p PORT USER @ SERVER
其中PORT是端口号,USER是远程用户名,SERVER是服务器的IP地址或域。
如果您已将SSH配置为在服务器上使用非标准端口,必须在MOSH命令中定义它,如下所示:
- mosh --ssh="ssh -p PORT" USER@SERVER
其中PORT是服务器上的非标准SSH端口,USER是远程用户名,SERVER是服务器的IP地址。您可以结合UDP和SSH端口方面的更改,就像这样:
- mosh -p UDP --ssh="ssh -p SSH" USER@SERVER
其中UDP是UDP端口,SSH是SSH端口,USER是远程用户名,SERVER是服务器的IP地址或域。
MOSH也可以使用SSH身份,就像SSH中使用SSH身份那样,如下所示:
- mosh -i IDENTITY
其中IDENTITY是您在~/.ssh/config中配置的身份的名称。
如何配置防火墙?
您可能会遇到的一个问题是,服务器上的防火墙拒绝连接至MOSH将使用的必要端口。这个问题很容易解决。在使用“不复杂防火墙”的服务器(比如Ubuntu Server)上,打开这些端口的命令将是:
- sudo ufw allow 60000:61000/udp
如果您的服务器使用iptables,命令将是:
- sudo iptables -I INPUT 1 -p udp --dport 60000:61000 -j ACCEPT
一旦您允许端口访问,MOSH应该可以正常工作了。
这就是在MOSH的帮助下,在客户端和服务器之间获得比较可靠的SSH连接所需的全部步骤。试一下这款工具,看看即使从一个网络漫游到另一个网络,您的SSH连接是否仍保持连接状态。
原文标题:How to achieve persistent SSH connections with the open source MOSH,作者:Jack Wallen
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】