当遇到的Linux SSH连接在10秒后自动断开的问题时,一般是由服务器端的SSH服务配置触发的,当然也不排除有些故障场景是因网络故障导致。今天我们就整理了一个快速排查表格,帮助需要的朋友获取定位问题的思路:
可能原因 | 具体表现 | 优先排查方向 |
|---|---|---|
SSH服务空闲超时设置 | 精确地在闲置约10秒后断开 | 服务器端 sshd_config中的 ClientAliveInterval参数 |
网络不稳定或防火墙策略 | 连接随机中断,可能伴有卡顿 | 网络延迟/丢包、中间网络设备(如防火墙)的会话超时设置 |
服务器资源紧张 | 连接断开时服务器负载高 | 服务器CPU、内存使用情况(如OOM Killer是否终止了进程) |
客户端配置或网络问题 | 仅特定客户端连接时断开 | 客户端网络稳定性、客户端SSH配置 |
10秒这个非常精确的时间点,强烈指向服务器端SSH守护进程(sshd)的空闲连接超时设置。
1、登录服务器,编辑SSH服务器配置文件 /etc/ssh/sshd_config:
sudo vi /etc/ssh/sshd_config2、查找并修改关键参数:在文件中找到或添加以下两行:
ClientAliveInterval:服务器向客户端发送“保活”信号的时间间隔(秒)。如果这个值被设置为 10,服务器就会每10秒检查一次客户端是否存活。检查这些参数是否被设成了类似 ClientAliveInterval 10和 ClientAliveCountMax 1的组合,这会导致大约10秒后断开。
3、建议的修改值:为了保持连接稳定,可以调整为:
ClientAliveInterval 60
ClientAliveCountMax 34、重启SSH服务:修改保存后,重启SSH服务以使配置生效。
sudo systemctl restart sshd二、检查网络与防火墙
网络中间设备(如防火墙、路由器)的会话超时策略也可能切断空闲的TCP连接。
三、检查系统资源
如果服务器资源(如内存)耗尽,系统可能会终止进程来释放资源,包括SSH会话。
四、配置客户端作为临时方案
如果你暂时没有服务器的管理员权限,可以在SSH客户端上进行配置,主动发送“保活”包。
Host your_server_ip
ServerAliveInterval 50
ServerAliveCountMax 3这会让客户端每50秒向服务器发送一次保活信号。这个间隔应小于服务器设置的 ClientAliveInterval(如果服务器端是10秒,这里可以设为更小的值如8秒,但调整服务器端是根本解决方法)。
ssh -o ServerAliveInterval=50 username@your_server_ip如果以上方法均未解决问题,开启SSH连接的详细日志输出可以帮助定位问题根源。
在客户端连接时添加 -vvv选项:
ssh -vvv username@your_server_ip观察连接断开前最后打印的日志信息,可能会提示认证、网络或协议层面的错误。