使用Mosh消除SSH中的网络连接问题
要登录到远程系统,我们曾经使用telnet。
由于telnet的严重安全漏洞,因此已由ssh代替。
SSH允许用户使用/不使用密码但借助私钥和公钥登录远程系统。
SSH的主要优点是它的加密。
它使用户可以与远程系统进行通信,而不必担心被窃听或者篡改。
SSH的缺点
简单来说,ssh是加密数据包的TCP连接。
SSH像telnet一样在本地和远程系统之间发送数据包,但数据包的内容已加密。
中间没有缓冲和处理。
甚至将我们键入的字符也发送到远程系统,然后远程系统将其响应(包含键入的要在屏幕上显示的字符)发送到本地系统。
我们能看到整个往返过程中看到的是我们键入的单个字符吗?
“”“它只是发送/接收加密的数据包””””
但是,当网络断开连接或者速度很慢时会发生什么。
TCP连接将断开,本地系统将悬空悬空,而不会发生任何错误。
它不是典型的冻结Linux系统,而只是具有断开的SSH连接的冻结终端。
在以下情况之一中,我们可能对ssh感到沮丧。
- 网络连接已断开。ssh会话将不会显示任何内容。当我们键入shell程序时,我们会发现什么都没有发生。然后,我们将检查互联网/Wi-fi图标。
- 当互联网连接速度慢时,也会出现相同的情况。我们在本地系统中键入的字符可能会在几秒钟后出现,或者在更糟的情况下甚至是几分钟后也会出现。
- 如果我们长时间不活动,即使计算机没有闲置并且网络连接处于活动状态,有时SSH也会停止工作。
总而言之,SSH提供了高安全性,但在高延迟连接中几乎没有可用性。
即使在SSH连接断开后,我们也可以在Linux中使用nohup命令继续运行命令,但这并不是一个很好的解决方案。
Mosh:SSH没有连接问题
Mosh代表MObile SHell。
它为上述所有问题提供了简单的解决方案。
它使用类似于使用SSP协议(状态同步协议)对项目(对象)进行缓冲和同步的技术。
为了传输数据包,它使用无连接协议UDP。
要了解mosh的工作原理,请阅读其官方页面。
为了避免重新发明轮子,mosh使用ssh进行身份验证。
因此,我们无需创建新的密钥对或者用户等。
因此,ssh具有的每个安全优势也与mosh相同。
这也意味着我们应该在本地和远程系统中都具有有效的SSH设置。
在Ubuntu和其他Linux发行版上安装Mosh
如果我们尚未安装和配置ssh,请了解SSH的基础知识,并在Ubuntu或者我们使用的任何Linux上启用SSH。
在确保我们可以使用SSH设置后,安装mosh是一项直接的任务。
我们需要安装的软件包在本地和远程系统中都是相同的。
要在基于Ubuntu或者Debian的Linux发行版中安装mosh,可以一一使用以下命令:
sudo apt update sudo apt install mosh
Mosh在所有主要的Linux发行版中均可用。
使用发行版的程序包管理器进行安装。
在完成安装mosh之后,客户端/本地端的所有内容都已准备就绪。
在远程端(即服务器),我们必须进行简单的配置。
在远程服务器上配置Mosh
还记得我说过的mosh使用UDP的部分吗?
默认情况下,mosh使用UDP端口60000-61000。
因此,如果远程系统上有防火墙,则必须按照以下方式重写这些端口的防火墙规则。
ufw是防火墙管理器。
sudo ufw allow 60000:61000/udp
让我们通过mosh连接
到目前为止,我们已经在两个系统中都安装了有效的SSH,mosh,以及允许远程服务器上60K-61K端口上的UDP通信的防火墙规则。
要使用mosh,如下所示
mosh Hyman@theitroad
是的!我知道。
就像ssh一样简单。
但是,如果我需要指定默认端口以外的ssh端口或者使用ssh特定选项该怎么办。
莫什让你受够了。
我们只需要将“ ssh选项[参数]”传递给选项–ssh。
例如,我需要连接到在远程服务器上的端口2222上运行的ssh。
可以如下进行。
mosh Hyman@theitroad --ssh="ssh -p 2222"
就是说系统已连接。
现在,要实现Mosh的强大功能,请尝试关闭并重新打开网络连接。
我们可以看到mosh仍在工作。