Ssh 连接冻结

Ssh 连接冻结

我有一台运行 Ubuntu 11.04 的旧 P4 系统。该机器通过 USB 无线适配器连接到互联网,并且安装了 openssh,因此我可以从网络中的其他计算机连接到它。我的问题是,通过 ssh 连接到机器几分钟后,ssh 连接冻结,我无法在终端上执行任何操作。我知道服务器仍连接到无线网络,但不知何故它没有响应……除非我在服务器机器上从互联网请求网页或其他任何东西。当 ssh 连接冻结时,我使用服务器机器通过 wget 请求网页,它会等待一段时间,然后下载页面,然后之前冻结的 ssh 连接再次开始工作。

作为临时解决方案,我在服务器机器上执行一个脚本,该脚本定期请求网页(通过 wget)。到目前为止,这个解决方案似乎运行良好,但我不明白为什么机器会这样。有什么想法吗?

答案1

您可能需要将 SSH Keepalive 设置为一分钟以内的时间(在客户端)。

看着/etc/ssh/ssh_config文件

服务器存活间隔
设置超时间隔(以秒为单位),如果在此间隔之后未从服务器收到任何数据,ssh(1) 将通过加密通道发送一条消息以请求服务器响应。
默认值为 0,表示这些消息将不会发送到服务器,如果设置了 BatchMode 选项,则为 300。
此选项仅适用于协议版本 2。ProtocolKeepAlives
是此选项的 Debian 特定兼容性别名。

您需要保持连接处于活动状态,这表明您需要这样做。

为了更好地理解,请查看OpenSSH 常见问题解答
特别,我的 ssh 连接在 N 分钟不活动后冻结或断开

这通常是由于数据包过滤器或 NAT 设备因不活动而导致 TCP 连接超时所致。您可以启用客户端存活间隔在服务器的sshd_配置或启用服务器存活间隔在客户的ssh_配置(后者在 OpenSSH 3.8 及更新版本中可用)。

启用任一选项并将间隔设置为小于会话超时所需时间,将确保连接在设备的连接表中保持“新鲜”。

您可能还会对以下内容感兴趣TCP保持连接设置。
(我并不是建议你改变它;只是建议你也读一下)

相关内容