mosh 移动终端实战:切网不掉线、弱网不卡顿,SSH 断线重连可以退休了

不少朋友在 VPS 上敲命令时都遇到过这种尴…

不少朋友在 VPS 上敲命令时都遇到过这种尴尬:高铁上信号忽强忽弱,SSH 突然卡住不动,过一会儿直接甩一句 broken pipe,重连后还得重新找回刚才的目录和命令。又或者用手机热点远程维护服务器,Wi-Fi 切到 4G 的那一瞬间,连接就断了。

这些问题,mosh 基本都能解决。mosh 全称 mobile shell,是 MIT 做的一个 SSH 替代品,专门为弱网、高延迟、来回切网的移动场景设计。今天这篇短篇就把它讲清楚:它能干啥、怎么装、有哪些坑。

mosh 到底解决了什么

归纳下来是三个痛点:

  • 本地即时回显:你敲的每个字符立刻显示在屏幕上,不用等服务器回包,弱网下打字不再”一顿一顿”。
  • 自动漫游:Wi-Fi 切 4G、换了 IP、电脑从睡眠唤醒,连接都不会断,mosh 会自动重新连到新地址。
  • 抗丢包:底层走 UDP,配合本地预测,丢包 30% 依然能流畅输入。

一句话总结:SSH 靠 TCP 硬扛网络波动,mosh 则是为”不稳定网络”重新设计的一套协议,体验完全不是一个级别。

安装与使用

mosh 要求两端都要装,缺一不可。服务端(VPS 上):

sudo apt install mosh -y

客户端(本地 Mac 或 Linux):

# Mac
brew install mosh

# Linux
sudo apt install mosh -y

Windows 用户可以直接在 WSL 里装,或者搜 “Mosh for Windows” 的图形客户端。装好后,用法和 SSH 几乎一样:

mosh root@你的服务器IP

如果你改了 SSH 端口(比如 2222),第一次登录要显式指定:

mosh --ssh="ssh -p 2222" root@你的服务器IP

防火墙要放行 UDP 端口

mosh 的登录认证仍然走 SSH,但认证之后的数据传输会切到 UDP 的 60000–61000 这个端口区间。所以只放行 22 端口是连不上的,还得把这组 UDP 端口打开。

用 nftables 的话,加一条规则:

nft add rule inet filter input udp dport 60000-61000 accept

如果你用的是云厂商的安全组,记得去控制台把这组 UDP 端口也加上,否则会一直卡在认证阶段。

必须知道的几个限制

  • 不支持端口转发:-L/-R/-D 和 X11 转发都没有,这些需求还得退回原生 SSH。
  • 不支持滚动回看:mosh 只保留当前屏幕,终端滚屏历史是没有的。
  • 两端都要装:服务器没装 mosh,客户端装了也白搭。

和 tmux 配合才是完全体

我的日常用法是:tmux 负责”会话不丢”,mosh 负责”连接不断”。先 mosh 登进去,再 attach 到 tmux 会话里干活,网络再差也不怕。如果只是临时敲两条命令,直接 mosh 就够用,比 tmux 轻得多。

如果你经常在移动场景下维护服务器,或者家里宽带到 VPS 的链路不稳定,强烈建议把 mosh 装上。半小时就能上手,带来的体验提升非常明显。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注