2026年8月19日
iPhone 上的 SSH 会话,怎么做到断网不断线
Mosh 能让 shell 扛过锁屏、隧道和 Wi-Fi 切蜂窝。用 SwiftServer 配好它,五分钟。

手机上的 SSH 会话活不长。锁屏、进隧道,或者从 Wi-Fi 切到蜂窝网络,底层的 TCP 连接就断了。原来的 shell、目录和正在看的命令,都得重来。
解法是 Mosh,即 mobile shell。它经 SSH 启动,之后改走 UDP,两端各自保存会话状态。地址变了,会话跟着走。SwiftServer 自己实现了客户端,你只需在服务器上装一个包。

1. 在服务器上安装 mosh
# Debian、Ubuntu、Raspberry Pi OS
sudo apt install mosh
# Fedora、Rocky、AlmaLinux
sudo dnf install mosh
# macOS,用 Homebrew
brew install moshSwiftServer 需要服务器上已有 mosh-server,但不会替你安装。
2. 放行 UDP 端口
Mosh 走 UDP,一个会话占一个端口,默认在 60000–61000 之间。在服务器防火墙上放行这段入站范围:
# ufw
sudo ufw allow 60000:61000/udp
# firewalld
sudo firewall-cmd --permanent --add-port=60000-61000/udp
sudo firewall-cmd --reload只想开放几个端口的话,在服务器上收窄范围,再在这台机器的 Mosh 设置里填入相同范围。
3. 把机器切到 Mosh
在 SwiftServer 里打开这台机器,把连接设为 Mosh,保存。终端按钮变成启动 Mosh 终端。凭据、主机密钥和已配置的跳板机或代理都保持不变。
4. 连上,然后该干嘛干嘛
照常启动终端。SwiftServer 先通过 SSH 登录,启动 mosh-server,再把会话交给 UDP。从这以后:
- 锁屏,一小时后回来,提示符还停在原地。
- 从 Wi-Fi 换到蜂窝网络,状态行会短暂显示「Mosh 正在重建 UDP 连接」,接着「Mosh UDP 连接已恢复」。shell 全程没察觉。
- 链路慢的时候打字,按键立刻显示出来,服务器确认之前带下划线。
一次部署、一轮训练或一个正在执行任务的 agent,这类长时间任务从此在地铁上看一眼就行。
常见问题
iPhone 上需要装 Mosh 吗?
不需要。SwiftServer 自己实现了 Mosh 客户端。服务器上要有 mosh-server,手机上什么都不用。
Mosh 能走跳板机吗? SSH 启动这一步可以,跳板机路由、SOCKS5 或 HTTP CONNECT 代理都行。之后 UDP 会话是直连机器的,所以它需要一个手机能访问到的地址;和 SSH 地址不一样的话,在机器的 Mosh 设置里填一个 UDP 主机。
会话起不来,去哪里看?
SwiftServer 里的 Mosh 诊断会显示启动停在了哪一步。常见原因是 PATH 里没有 mosh-server、UDP 范围被防火墙挡住,或者 NAT 不保持映射。
Mosh 免费吗? 免费。Mosh 属于免费版,iPhone、iPad 和 Mac 都能用,机器数量和会话数量不设上限。