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。

SSH KeepAlive by @sskaje: https://sskaje.me/2015/10/ssh-keepalive/

Incoming search terms: