使用 Mosh 摆脱 SSH 中的网络连接问题

要登录到远程系统,我们曾经使用 远程登录. 由于telnet存在严重的安全漏洞,被替换为 SSH.

SSH 允许用户使用/不使用密码登录远程系统,但需要使用私钥和公钥。 SSH 的主要优点是它的加密。 它允许用户与远程系统进行通信,而不必担心被窃听或篡改。

SSH的缺点

把工作 SSH 简单来说,就是加密包的TCP连接。

SSH 在本地和远程系统之间发送数据包,就像 远程登录 但数据包的内容是加密的。 中间没有缓冲和处理。 甚至您键入的字符也会发送到远程系统,然后远程系统会将其响应(其中包含要在屏幕上显示的键入的字符)发送到本地系统。

你能看到你输入的单个字符的整个往返旅程吗?

“”它只是发送/接收加密数据包“”

但是当网络断开或非常慢时会发生什么。 TCP 连接将被中断,本地系统将被悬空而不会出现任何错误。 它不是典型的冻结 Linux 系统,只是一个 SSH 连接断开的冻结终端。

在以下其中一种情况下,您可能对 ssh 感到沮丧。

  1. 您的网络连接已断开。 您的 ssh 会话不会显示任何内容。 当你输入 shell 时,你会注意到什么都没有发生。 然后您将检查互联网/Wi-fi 图标。
  2. 当您的互联网连接速度较慢时,会出现同样的情况。 您在本地系统中键入的字符可能会在几秒钟后出现,或者在更糟糕的情况下,甚至几分钟。
  3. 当您长时间不活动时,即使您的计算机没有空闲并且网络连接处于活动状态,有时 SSH 也会停止工作。

总而言之,SSH 提供了很好的安全性,但在高延迟连接中几乎没有可用性。 即使在 SSH 连接断开后,您也可以在 Linux 中使用 nohup 命令继续运行这些命令,但这并不是一个好的解决方案。 你知道什么更好吗? 莫什!

Mosh:没有连接问题的 SSH

Mosh 比 SSH 好

莫什 代表 移动壳牌. 它为上述所有问题提供了一个简单的解决方案。 它使用类似于使用 SSP 协议(​​状态同步协议)的项目(对象)的缓冲和同步的技术。 为了传输数据包,它使用 UDP 这是无连接协议。

要了解 mosh 的工作原理,请阅读其 官方网站.

为了避免重新发明轮子,mosh 使用 SSH 用于身份验证。 因此,您无需创建新的密钥对或用户等。 所以每一个安全优势 SSH 有也有 莫什. 这也意味着您应该在本地和远程系统中都有一个有效的 SSH 设置。

在 Ubuntu 和其他 Linux 发行版上安装 mosh

如果您没有安装和配置 ssh,请学习 SSH 的基础知识并在 Ubuntu 或您使用的任何 Linux 上启用 SSH。

在确保您有一个有效的 SSH 设置之后,安装 mosh 是一项简单的任务。 您需要安装的软件包在本地和远程系统中是相同的。

安装 莫什 在基于 Ubuntu 或 Debian 的 Linux 发行版中,您可以一一使用以下命令:

sudo apt update
sudo apt install mosh

Mosh 在所有主要的 Linux 发行版中都可用。 使用您的发行版的包管理器来安装它。

完成安装 mosh 后,客户端/本地端一切就绪。 在远程端(即服务器),您必须进行简单的配置。

在远程服务器上配置 mosh

记住我说的那部分 莫什 使用UDP? 默认情况下,mosh 使用 UDP 端口 60000-61000。 因此,如果您在远程系统上有防火墙,则必须为这些端口重写防火墙规则,如下所示。 ufw 是防火墙管理器。

sudo ufw allow 60000:61000/udp

让我们通过 mosh 连接

到目前为止,我们有一个工作的 SSH,安装在两个系统中的 mosh,以及一个允许远程服务器上端口 60K-61K 上的 UDP 流量的防火墙规则。

要使用 mosh,它很简单,如下所示

mosh [email protected]

是的! 我知道。 就像 ssh 一样简单。

但是,如果我需要指定默认端口以外的 ssh 端口或使用 ssh 特定选项怎么办。 mosh 为您提供保障。 你只需要通过“SSH 选项 [argument]” 到选项 –ssh.

为了 example,我需要连接到 SSH 在远程服务器上的端口 2222 上运行。 可以按如下方式完成。

mosh [email protected] --ssh="ssh -p 2222"

那就是系统是连接的。 现在要了解 mosh 的强大功能,请尝试关闭并重新打开网络连接。 您可以看到 mosh 仍在工作。 多么酷啊!

我希望你喜欢这个关于 Mosh 的教程。 自从发现 Mosh 后,我就不再使用 ssh 连接远程服务器了。 你呢? 您喜欢 Mosh 还是仍然喜欢 SSH? 分享你的观点。