小智 15
看起来 CentOS 机器的 SSHD 配置没有设置为客户端 KeepAlive。
在 CentOS sshd 配置 (/etc/ssh/sshd_config) 中删除这两行,重新启动它,享受吧!
KeepAlive yes
ClientAliveInterval 60
Run Code Online (Sandbox Code Playgroud)
当您使用它时,我建议您使用 gnuscreen来让您的会话在 CentOS 端保持活动状态。
实际的答案几乎总是您在路径中有某种类型的 NAT 设备,通常是防火墙,其状态表具有相当激进的超时。由于您将 ssh 连接闲置了一段时间,NAT 设备会“忘记”您的内部地址和源端口号与临时外部 NAT 化地址和端口号之间的映射。
当您稍后尝试在该 ssh 窗口中执行某些操作时,会为您分配一个新的临时地址/端口对,目标 ssh 服务器不知道并且不响应;稍后,达到某个本地超时,并且本地计算机断开连接。
对此的实际解决方法是完全按照 yuriismaster 的建议进行操作:启用 KeepAlives(确保常规流量“处理”该状态表条目),并screen在远程端使用(以在事情确实被删除的情况下保留状态)。我发布这个答案只是因为你问发生了什么,以及如何处理它。希望这可以澄清为什么yuriismaster 的建议是好的。