我不确定是否有其他人遇到过 SSH 超时问题
我设置了全新安装的 CentOS 6.5 minimal,完全没有修改 SSH 配置,当我使用 putty 通过 SSH 登录时,它从不超时。我可以连续运行数周,即使空闲时也不会超时
我重新设置了另一个,没有修改 ssh 配置,它每隔 2 分钟左右就会超时一次
我的意思是为什么会这样?SSH 超时是否像抛硬币一样,即使配置完全相同,某些服务器的超时频率也可能比其他服务器高?还有人遇到过这种情况吗?
无论如何我继续添加
ClientAliveInterval 60
在服务器上仍然会出现超时问题
有人能告诉我如何获得一个一致的 ssh 配置,以便完全禁用超时...并且能够像预期的那样 100% 地工作吗?
谢谢
答案1
连接超时通常是由于数据包过滤器或 NAT 设备由于不活动而导致 TCP 连接超时所致。关于 ssh 设置,没有一条黄金法则。很大程度上取决于您的系统和连接。通常,您应该将保持活动间隔值设置为小于连接通常超时所需的时间(从系统中的连接表中踢出)。
您可以在服务器上将其设置为 ,ClientAliveInterval
也可以在客户端将其设置为ServerAliveInterval
。该值是秒数。如果将其设置为太高的值,ssh 可能无法在连接断开之前发送消息。
您还应增加服务器 ( ClientAliveCountMax
) 或客户端 ( ServerAliveCountMax
) 上的最大保持活动重试次数。默认值为 3。
此计数表示服务器/客户端在断开连接之前尝试从另一方获取保持活动确认的次数。假设您设置ClientAliveInterval
为 60 秒和ClientAliveCountMax
10。如果其中一方未响应 10 次连续的保持活动查询,则连接将在 10 次尝试 * 60 秒后断开。您可以尝试将此参数增加到更高的级别,例如 100 甚至 9999(?)。
您还可以考虑关闭客户端和服务器上的 TCP 保持活动数据包。
TCPKeepAlive no
这意味着如果路由暂时中断,连接不会中断。但另一方面,AliveCountMax
如果存在通信问题,连接有时可能会挂起(特别是如果您将其设置为高值),因为 ssh 无法在 TCP 级别检测到该问题。
也可以看看: