xiufeigo™
Home
运维
[mosh] - 另类的 ssh

一、MOSH 是什么

Mosh 代表 Mobile Shell。

它使用类似于使用 SSP 协议(状态同步协议)对项目(对象)进行缓冲和同步的技术。

它通过使用 UDP 而非 TCP 来传输数据包,因此它具备响应速度更快的特性。

为了避免重复造轮子,mosh 使用 ssh 进行身份验证,因此不需要创建新的密钥对或用户等。

二、它的优势是什么

  1. 持久性连接:Mosh 会维持持久性的连接,即使你的IP改变或者网络断开,你仍然可以回到你的会话中。SSH 如果断线需要重新连接,这在网络环境差的时候非常麻烦。

  2. 更低的网络延迟:Mosh 使用了一种称为 SSP(State Synchronization Protocol)的协议,它可以预测并立即显示用户输入,而不用等待服务器的响应。这使得在高延迟或者丢包的网络环境下使用 Mosh 会更加流畅。

  3. 漫游支持:Mosh 支持用户在不同的网络环境下切换,例如从 WiFi 切换到 4G,或者更换位置导致 IP 地址变化。SSH 没有这个功能,如果 IP 地址改变,SSH 的连接就会断开。

  4. 更好的 Unicode 支持:Mosh 更好地支持了 Unicode,包括对宽字符和组合字符的支持,这使得显示一些特殊语言或者 emoji 等更为正确。

三、缺陷

  1. 安全性:Mosh 使用 UDP,不同于 SSH 的 TCP,所有使用 Mosh 的流量必须通过 iptables 或其他防火墙显式允许。此外,Mosh 不支持 SSH 的一些安全特性,例如密钥管理和主机身份验证。

  2. 功能性:Mosh 不支持 X11 转发,这对于需要 GUI 的用户来说可能造成不便。它也不支持端口转发和代理,这是SSH中的常用功能。

  3. 安装和配置:Mosh 需要在客户端和服务器端都安装,且端口范围(默认 60000-61000 )需要在防火墙中打开,这对于一些服务器可能有一定的难度。

  4. 滚动缓冲区:Mosh 没有提供滚动缓冲区,这意味着你无法滚动查看超出当前窗口的输出。虽然这可以通过使用类似screentmux等终端复用器解决,但对于一些用户来说可能不那么方便。

  5. 网络状态变化的处理:虽然 Mosh 能够处理 IP 地址的变化,但如果你在网络状态真正变化的时候键入内容,那么这些内容在连接恢复后可能会丢失。

四、安装

# mac 安装
brew install mosh

# archlinux 安装
yay -S mosh

# centos 安装
yum install mosh

粤ICP备2022009857号-1