SSH KeepAlive

网络不稳定的情况下,可能SSH的连接会中断。一般GUI的客户端,如SecureCRT、XShell、vSSH等,都可以有选项直接定时(例如每5秒)发送心跳包,来保持连接。命令后的OpenSSH客户端也有类似功能,需要开启参数 ServerAliveInterval。 Mac 下需要用root编辑 /etc/ssh_config,linux下在 /etc/ssh/ssh_config. 也可以使用 ~/.ssh/config 配置用户级参数。 编辑后的内容形如:

ssh_config 里还有个参数 TCPKeepAlive,默认false,可以改为yes。 参考 http://unix.stackexchange.com/questions/34004/how-does-tcp-keepalive-work-in-ssh/34201#34201 的说明: TCPKeepAlive是靠发送空的ACK包来保持连接,由可能在特定情况下无效(被防火墙过滤); ServerAliveInterval 是SSH层的,数据加密状态传输,不会被简单规则过滤。 更多参数说明可以参考 man ssh_config. 上边的配置里我还开启了 ServerAliveCountMax 5,解释是: 10秒钟发送一次心跳,如果连续5次都没有响应,客户端就断开连接。 这个值默认是3。 Incoming search terms:ServerAliveIntervalclient alive countmaxServerAliveCountMaxssh sendenvssh ServerAliveIntervalsshd KeepAlivetcpkeepaliveLink to this post!