- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。
在日常的 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 连接,这时可以检查云平台的相关配置,看看是否可以调节空闲超时。
蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。
售前咨询
售后咨询
备案咨询
二维码
TOP