ServerBox 的 SSH 连接超时、自动重连和网络策略
SSH 连接超时
从 ServerBox 发起 SSH 连接时,需要等待服务器响应握手。ServerBox 默认的超时设置:
- 初始连接超时:10 秒(TCP 握手 + SSH 协议握手)
- 空闲超时:由服务器 SSH 服务端配置决定(ServerBox 会通过 ServerAliveInterval 保持连接)
如果 10 秒内连接不上,ServerBox 会提示「连接超时」。常见原因:
- 服务器关机了
- 网络不通
- SSH 端口不是 22 且填错了
- 服务器防火墙拦截了
Server Alive 保持活跃
ServerBox 会自动在 SSH 会话空闲时发 ServerAlive 包,防止连接被中间的防火墙/NAT 设备断掉:
- 默认每 30 秒发一次心跳包
- 服务器端收到后回复,连接保持
- 可以在服务器设置里调整这个间隔(更频繁 = 更保活,但产生更多流量)
这个机制解决了很多"手机放口袋半小时,回来 SSH 就断了"的问题。
自动重连
连接断开后,ServerBox 会按以下策略自动重连:
| 重试次数 | 间隔 | 说明 |
|---|---|---|
| 1~5 次 | 5 秒递增(5s, 10s, 15s...) | 快速重试阶段 |
| 6~10 次 | 30 秒 | 慢重试阶段 |
| 10 次后 | 放弃,手动点重连 | 防止无限重试 |
每次重连尝试都会在 App 内显示状态。如果服务器只是短暂重启(比如 Docker daemon 重启),自动重连应该能救回来。
后台连接保持
移动操作系统对后台活动有限制:
- iOS:App 切到后台后最多保持 SSH 连接约 10 分钟,之后系统可能挂起 App 或杀死进程
- Android:取决于系统厂商的电池管理策略,小米/华为等激进的系统可能很快就断
- 桌面端:没有这个问题,SSH 连接可以持续好几天
ServerBox 能做的优化:
- 在后台时用 ServerAlive 保持活跃
- 如果装了 ServerBoxMonitor,连接断开时可以走推送通知
手动重连
在服务器连接上点一下侧栏里的服务器名就能重新打开连接。如果当前连接已断,会弹红色提示,点「重连」按钮即可重新发起 SSH 握手。