PuTTY连接Ubuntu服务器5分钟后自动断开的问题求助
PuTTY连接Ubuntu服务器5分钟后自动断开的问题求助
我最近在使用PuTTY连接Ubuntu服务器时遇到了一个顽固的问题:虽然能正常登录服务器,但只要连接保持5分钟左右,就会自动断开,同时弹出错误提示:
"network error: software caused connection abort."
我自己尝试排查了好几次,但都没找到解决办法,有没有哪位能帮忙指点一下怎么解决这个问题呀?
(附错误提示截图:PuTTY连接错误提示)
针对这个问题的解决方法
这种超时断开的情况几乎都是因为TCP连接长时间无数据传输,被网络设备或系统自动切断导致的,你可以从「PuTTY客户端」和「Ubuntu服务器端」两个维度来配置,彻底解决这个问题:
一、PuTTY客户端侧配置(仅当前PuTTY生效)
打开PuTTY后,按照以下步骤操作:
- 在左侧导航栏展开「Connection」选项
- 找到「Seconds between keepalives (0 to turn off)」,把默认的
0改成300(也就是5分钟,刚好在断开前发送保活包),也可以设成更小的数值比如60,让保活更频繁 - 勾选「Enable TCP keepalives (SO_KEEPALIVE option)」,确保TCP层的保活机制开启
- 回到左侧的「Session」界面,选中你常用的服务器会话,点击「Save」保存配置,下次连接就会生效了
二、Ubuntu服务器侧配置(所有客户端连接都生效,更彻底)
如果想让所有连接到这台服务器的客户端都不会出现超时断开,推荐从服务器端设置:
方法1:修改TCP保活参数
临时生效(服务器重启后失效):
执行以下命令:sudo sysctl -w net.ipv4.tcp_keepalive_time=300 sudo sysctl -w net.ipv4.tcp_keepalive_intvl=60 sudo sysctl -w net.ipv4.tcp_keepalive_probes=5简单解释:
tcp_keepalive_time:连接空闲300秒后,服务器开始发送保活包tcp_keepalive_intvl:两次保活包的间隔为60秒tcp_keepalive_probes:连续发送5次保活包没收到回应,才判定连接断开
永久生效(重启服务器依然有效):
编辑sysctl配置文件:sudo nano /etc/sysctl.conf在文件末尾添加以下内容:
net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_keepalive_intvl = 60 net.ipv4.tcp_keepalive_probes = 5按
Ctrl+O保存,Ctrl+X退出后,执行sudo sysctl -p让配置立即生效
方法2:修改SSH服务配置
SSH服务本身也有保活机制,修改后可以维持连接:
- 编辑SSH服务配置文件:
sudo nano /etc/ssh/sshd_config - 找到或添加以下参数:
解释:ClientAliveInterval 300 ClientAliveCountMax 3ClientAliveInterval:服务器每隔300秒给客户端发送一次心跳包ClientAliveCountMax:如果连续3次没收到客户端的回应,才断开连接
- 保存退出后,重启SSH服务:
sudo systemctl restart sshd
以上方法任选一种或者组合使用,都能有效解决PuTTY连接5分钟后自动断开的问题~
备注:内容来源于stack exchange,提问作者Vaidehi Arbhi




