帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  如何解决SSH连接Linux超时自动断开

如何解决SSH连接Linux超时自动断开

2025-02-08 15:26:41 542

欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。

 

在日常的 SSH 连接过程中,特别是当你长时间不进行操作时,连接经常会出现自动断开的问题。这个问题的原因通常是由于 SSH 连接处于闲置状态,服务器为了节省资源,自动切断了连接。解决这个问题,我们可以通过调整 SSH 配置文件来保持连接的稳定性,确保在没有操作的情况下也能持续连接。

 

一、修改 /etc/ssh/sshd_config 文件

1.开启 TCP Keepalive(保持活动连接)

sshd_config 文件中找到 TCPKeepAlive 这个配置项,确保它的值是 yes。这意味着服务器将定期检查与客户端的连接是否仍然有效。

这样做的目的是防止由于空闲超时导致连接被断开,TCP 连接仍然会通过“心跳”机制保持活动状态。

TCPKeepAlive yes

 

2.配置 ClientAliveInterval 和 ClientAliveCountMax

ClientAliveInterval 控制服务器端向客户端发送“保持活动”请求的时间间隔。默认情况下,它的值是 0,表示服务器不主动向客户端发送保持活动的请求。为了避免因空闲导致连接被关闭,可以将其设置为 60 秒,表示服务器每分钟向客户端发送一个“活跃”消息。

ClientAliveCountMax 表示服务器发送的保持活动请求没有得到客户端响应时,服务器会等待多少次。如果超过了这个次数,连接将被关闭。默认值是 3,也可以根据实际需要调整。

配置如下:

ClientAliveInterval 60

ClientAliveCountMax 3

这样配置后,服务器会每 60 秒发送一次保持活动的请求,如果客户端没有响应,则会尝试最多 3 次。3 次之后,服务器会认为客户端已经不再活跃,从而断开连接。

 

二、配置生效

修改完 sshd_config 文件后,需要使新的配置生效。通常,很多教程建议使用 service ssh restart 或 systemctl restart sshd 来重启 SSH 服务,但在 CentOS 7(及以上版本)中,可能会遇到命令无法执行的问题。为了避免这些问题,可以使用 service sshd reload 来重新加载 SSH 配置文件,而不需要完全重启服务。

service sshd reload

 

三、检查配置是否生效

修改并重新加载 SSH 配置之后,你可以尝试连接到服务器,保持空闲状态一段时间(比如半小时或更长),看看是否还会被自动断开。如果配置生效,应该就不会再出现自动断开的情况了。

另外,你可以通过命令检查当前的 SSH 配置:

ss -tuln | grep :22

这个命令可以查看 SSH 服务是否在监听 22 端口(默认的 SSH 端口)。如果看到类似于 tcp LISTEN 0 128 *:22 *:* 的输出,表示 SSH 正在监听。

 

四、其他常见的连接断开问题

1.网络防火墙和 NAT 设置: 有时,防火墙或者 NAT 设备也会在连接空闲时断开 SSH 会话。为了避免这个问题,可以确保你的防火墙配置不会中断长时间空闲的连接。如果使用了外部防火墙或路由器,可以检查是否有相关的“空闲超时”设置。

 

2.客户端设置: 如果你是通过某些客户端工具(如 PuTTY、MobaXterm 等)连接的,可能需要检查客户端的设置,有些客户端也有类似的保持活动连接的设置。例如,PuTTY 中有一个选项可以设置每隔一段时间发送“空包”以保持连接活跃。

 

3.长时间空闲断开: 如果你使用的是某些云服务或者远程管理工具,可能会因为云服务的超时策略而断开 SSH 连接,这时可以检查云平台的相关配置,看看是否可以调节空闲超时。

 

蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。

更多技术知识,蓝队云期待与你一起探索。

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: