Mosh,全称Mobile Shell,是一种命令行应用程序,用于从客户端计算机通过互联网连接到服务器。它可以用作SSH,并包含比Secure Shell更多的功能。
它是一个类似于SSH的应用程序,但具有额外的功能。该应用最初由Keith Winstein编写,适用于类Unix操作系统,并在GNU GPL v3下发布。

Mosh的特点
- 它是一个支持漫游的远程终端应用程序。
- 适用于所有主要的类UNIX操作系统,如Linux、FreeBSD、Solaris、Mac OS X和Android。
- 支持间歇性连接。
- 提供智能本地回显。
- 支持用户按键的行编辑。
- 响应式设计和在wifi、蜂窝网络和长距离链接上的稳健性。
- 即使IP更改,仍保持连接。它使用UDP代替SSH使用的TCP。TCP在连接重置或分配新IP时会超时,但UDP会保持连接打开。
- 在长时间后恢复会话时,连接保持完整。
- 无网络延迟。立即显示用户键入的按键和删除,无网络延迟。
- 登录方式与SSH中的旧方法相同。
- 处理数据包丢失的机制。
在Linux中安装Mosh Shell。
在Debian、Ubuntu和Mint等系统上,您可以像下面这样使用Mosh软件包轻松地通过apt-get软件包管理器进行安装。
# apt-get update # apt-get install mosh
在基于RHEL/CentOS/Fedora的发行版上,您需要打开名为EPEL的第三方软件源,然后使用yum软件包管理器从该软件源安装mosh,如下所示。
# yum update # yum install mosh
在Fedora 22+版本上,您需要使用dnf软件包管理器来安装mosh,如下所示。
# dnf install mosh
在其他Linux发行版上,可以像下面这样进行安装。
# pacman -S mosh [On Arch/Manjaro Linux] $ sudo zypper in mosh [On OpenSuse] # emerge net-misc/mosh [On Gentoo]
如何使用Mosh Shell?
1.让我们尝试使用mosh shell登录到远程Linux服务器。
$ mosh [email protected]

注意:你看到我在连接时遇到了一个错误,因为我的远程CentOS 7服务器上的端口未打开。我执行了一个快速但不推荐的解决方法:
# systemctl stop firewalld [on Remote Server]
首选方式是打开一个端口并更新防火墙规则。然后连接到预定义端口上的 mosh。关于 firewalld 的详细信息,您可能希望查看这篇文章。
2. 假设默认的 SSH 端口 22 已更改为端口 70,在这种情况下,您可以使用 mosh 的 ‘-p‘ 开关定义自定义端口。
$ mosh [email protected] --ssh="ssh -p 70"
3. 检查已安装 Mosh 的版本。
$ mosh --version

4. 您可以关闭 mosh 会话,在提示符上键入 ‘exit‘。
$ exit
5. Mosh 支持许多选项,您可以看到:
$ mosh --help

Mosh Shell 的缺点
- Mosh 需要额外的先决条件,例如,允许通过 UDP 进行直接连接,这是 SSH 不需要的。
- 在 60000-61000 范围内进行动态端口分配。分配第一个开放的端口。它每个连接需要一个端口。
- 默认端口分配是一个严重的安全问题,特别是在生产环境中。
- 支持 IPv6 连接,但不支持 IPv6 上的漫游。
- 不支持回滚。
- 不支持 X11 转发。
- 不支持 ssh-agent 转发。
结论
Mosh是一个非常好用的小型实用工具,可以在大多数Linux发行版的软件仓库中下载到。尽管它有一些不足,特别是安全方面的关注和额外的要求,但它的特点如在漫游时保持连接是它的优点。我推荐每个处理SSH的Linux用户都试试这个应用程序,记住,Mosh是值得一试的。
Source:
https://www.tecmint.com/mosh-shell-ssh-alternative-on-linux/