Linux服务器通过SSH协议实现远程管理是运维场景中的常规操作,但不少用户会遇到SSH连接突然断开的情况,不仅中断正在执行的操作,还可能导致未保存的任务丢失。这类问题的诱因多样,需要结合具体场景逐步排查处理。

常见SSH连接断开原因分类
SSH连接断开通常可以分为网络层面、服务端配置层面、客户端配置层面、服务器资源层面四类,不同类别的诱因对应不同的解决思路。
网络层面原因
- 本地网络波动,比如宽带临时断连、路由器负载过高
- 服务器公网带宽跑满,导致SSH数据包传输超时
- 中间网络节点存在防火墙拦截SSH流量,默认SSH端口为22,部分网络环境会限制该端口的长时间连接
服务端配置原因
Linux服务器的SSH服务默认配置中,存在连接超时的相关参数,如果未做调整,长时间无操作的连接会被服务端主动断开。
客户端配置原因
部分SSH客户端自身设置了连接超时时间,或者未开启连接保活机制,也会导致连接被动断开。
服务器资源原因
服务器内存、CPU资源耗尽时,SSH服务进程无法正常运行,也会触发连接断开。
排查与解决步骤
第一步:排查网络问题
首先可以在本地终端执行长ping命令,观察网络是否存在丢包或延迟过高的情况:
# 持续ping服务器IP,观察丢包情况 ping 192.168.0.1
如果ping存在大量丢包,先排查本地网络和服务器公网带宽使用情况,确认网络链路正常后再进行后续排查。
第二步:调整SSH服务端配置
SSH服务端的配置文件为/etc/ssh/sshd_config,我们可以通过修改该文件中的超时相关参数,避免连接被服务端主动断开。
先备份原配置文件:
# 备份sshd_config配置文件 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
然后编辑配置文件,添加或修改以下两个参数:
# 编辑sshd_config文件 vim /etc/ssh/sshd_config # 以下是需要添加或修改的参数,放在文件末尾即可 # 客户端每隔多少秒向服务端发送保活请求,单位为秒 ClientAliveInterval 60 # 服务端最多发送多少次保活请求无响应后断开连接 ClientAliveCountMax 3
修改完成后重启SSH服务使配置生效:
# 重启sshd服务,不同Linux发行版命令略有差异 # CentOS/RHEL系统 systemctl restart sshd # Ubuntu/Debian系统 systemctl restart ssh
第三步:调整SSH客户端配置
如果是客户端侧的问题,可以修改客户端的SSH配置文件,开启客户端的保活机制。Linux系统客户端配置文件为~/.ssh/config,如果不存在可以手动创建:
# 创建或编辑客户端SSH配置
vim ~/.ssh/config
# 添加以下内容,全局生效
Host *
# 每隔60秒发送一次保活请求
ServerAliveInterval 60
# 最多发送3次无响应后断开
ServerAliveCountMax 3
如果是Windows系统使用PuTTY等客户端,可以在连接设置中找到保活相关选项,设置发送空包的时间间隔即可。
第四步:检查服务器资源状态
如果上述配置调整后问题依旧,需要检查服务器的资源使用情况,执行以下命令查看内存和CPU占用:
# 查看内存使用情况 free -h # 查看CPU占用情况 top
如果内存或CPU占用过高,需要排查占用资源的进程,关闭不必要的进程释放资源,避免SSH服务进程无法正常运行。
特殊场景处理
如果SSH连接断开后无法重新连接,且服务器没有公网访问的其他入口,可以联系机房人员重启服务器,或者在服务器本地控制台登录后,按照上述步骤调整配置。
另外如果服务器修改了默认SSH端口,排查时需要确认连接时使用的端口和配置的端口一致,避免端口不匹配导致的连接失败被误判为连接断开问题。
SSHLinux服务器连接断开ssh_config修改时间:2026-07-18 07:12:22