![启用 tcpkeepalive 超时后 ssh 不会断开连接](https://linux22.com/image/1362786/%E5%90%AF%E7%94%A8%20tcpkeepalive%20%E8%B6%85%E6%97%B6%E5%90%8E%20ssh%20%E4%B8%8D%E4%BC%9A%E6%96%AD%E5%BC%80%E8%BF%9E%E6%8E%A5.png)
我发现 ssh_config 文件中有 3 个重要参数:
TCPKeepalive
ServerAliveInterval
ServerAliveCountMax
1) 当我尝试使用 tcpkeepalive=yes 进行 ssh 时,尽管 tcp_keepalive 参数设置为:
tcp_keepalive_intvl 20
tcp_keepalive_probes 5
tcp_keepalive_time 40
我需要检查什么才能了解为什么断开连接没有在 140 秒内发生?
2) 我们可以同时使用上述 3 个参数吗?或者我们应该使用 TCP 超时或 ssh 服务器活动参数?如果我仅使用 serveralive* 参数,则断开连接会很快发生。但我明白了为什么 tcpkeepalive 超时没有发生。
你能帮忙吗?
答案1
TCPKeepalive 是指客户端在看似已死之前等待的时间。如果您仍通过 SSH 登录,则说明您没有死。在 TCP 术语中,死意味着不响应探测。这与您是否在计算机旁或 SSH 会话打开了多长时间无关,只要您的计算机处于打开状态、连接到互联网且仍在会话中,它就会保持活动状态。TCPKeepalive 更适合经常断开连接的人,如果他们将 TCPKeepalive 设置为相当长的时间,如果他们断开连接,在您的情况下,他们有 140 秒的时间重新连接,否则会话将被视为已死。
我想我的问题是,如果你不想让连接保持更长时间,为什么要使用 TCPKeepalive?问这个问题纯粹是为了让我们能够帮助解决导致问题的原因,这听起来不应该像它那样讽刺。