rmdir.cn

保持 SSH 连接与隧道

避免空闲连接被中间设备断开

语法

ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -N -L 本地端口:目标:端口 主机

说明

适用于长时间运行的隧道或运维会话被静默断开的情况。通过 ServerAliveInterval 与 ServerAliveCountMax 让客户端定期发送保活探测,连续多次无响应则主动断开以便及时发现故障。也可用 autossh 等工具在有线网络抖动时自动重建隧道。

参数

  • ServerAliveInterval

    客户端发送保活探测的间隔秒数

  • ServerAliveCountMax

    允许连续丢失的探测次数

  • TCPKeepAlive

    是否使用 TCP 层保活,默认开启

示例

带保活的端口转发

让隧道在空闲时也不会被断开。

ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -N -L 127.0.0.1:13306:127.0.0.1:3306 deploy@example.com

注意事项:保活探测会增加少量流量,30 秒是较常见的取值。断线后需要重新执行命令,长期运行建议改用 systemd 或 autossh 托管。

写入全局配置

对所有主机生效。

Host *
    ServerAliveInterval 30
    ServerAliveCountMax 3

注意事项:这是 ~/.ssh/config 片段。参数写法是键值对加缩进,不是 shell 命令;修改后对新发起的连接生效。

参考资料