Linux SSH超时[关闭]


10

X分钟不活动后,我一直在尝试几个系统超时,并且不确定如何解决。

我办公室有一个CentOS盒子。连接到SSH不能触摸它2个小时,当我运行某些命令时它仍然可以使用。

但是,连接到家里的同一个盒子,有时会在几秒钟后超时,有时会在几分钟后超时。

我认为这是我的互联网连接,但是如果我积极使用盒子,它将保持连接状态。

但是,如果我停止向Google输入内容,它将显示一条断开连接的消息,我必须重新连接。

我可以检查什么情况吗?


4
您(未命名的)客户端的文档。
user9517 '16

Answers:


14

您应该研究的第一件事是设置ServerAliveInterval。这应该在您的工作站上设置。

在Linux或OSX客户端上,可以在工作站上的〜/ .ssh / config下为用户创建配置文件。添加以下指令。就我而言,我希望它影响所有主机,因此将其放在主机*下。

Host *
    ServerAliveInterval 60

这将每60秒发送一次noop指令以保持连接打开。您可能需要调整值以满足您的需求。

在服务器端,确保将TCPKeepAlive设置为yes。

grep TCPKeepAlive /etc/ssh/sshd_config
TCPKeepAlive yes

如果您使用的是Windows,则需要参考客户端的文档。


11

Linux不会使空闲的SSH连接超时。您可以无限期地保持SSH连接的打开状态,只要两个端点都没有重新启动或没有获得新的IP地址,则在经过很长的空闲时间后访问该连接仍然可以使用。

但是,如果有任何状态的中间盒(NAT,防火墙等),它们很可能会使空闲连接超时。结果是,即使两端的连接都处于活动状态,两个端点也无法通信,因为在SSH客户端打开新连接之前,中间盒拒绝转发任何数据包。

如果你知道了中间件的超时时间,可以通过配置解决此问题ClientAliveInterval/etc/ssh/sshd_config服务器上或ServerAliveInterval~/.ssh/config客户端上。为了最佳检测断开的连接,建议同时启用这两种设置。当任一端点重新启动或获得新的IP地址时,这还将检测到断开的连接。

由于您指出超时有时似乎只有几秒钟,因此这可能不足以解决您的问题。CGN过载或配置错误可能导致视在超时非常低。您需要检查通信路径上各个点的通信量,以便确定CGN是否导致故障。

如果事实证明故障是由您的ISP愚蠢地执行的,例如通过不共享连接状态的多个CGN进行负载平衡连接引起的,则您不能仅通过调整SSH配置来自己解决问题。

如果您碰巧遇到CGN不可靠,拒绝修复的ISP,那么我所知道的唯一剩下的选择就是将客户端和服务器都升级到具有MPTCP支持的内核版本,或者使用旨在容忍自发性的隧道解决方案NAT上端口映射的更改。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.