You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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服务本身也有保活机制,修改后可以维持连接:

  1. 编辑SSH服务配置文件:
    sudo nano /etc/ssh/sshd_config
    
  2. 找到或添加以下参数:
    ClientAliveInterval 300
    ClientAliveCountMax 3
    
    解释:
    • ClientAliveInterval:服务器每隔300秒给客户端发送一次心跳包
    • ClientAliveCountMax:如果连续3次没收到客户端的回应,才断开连接
  3. 保存退出后,重启SSH服务:
    sudo systemctl restart sshd
    

以上方法任选一种或者组合使用,都能有效解决PuTTY连接5分钟后自动断开的问题~

备注:内容来源于stack exchange,提问作者Vaidehi Arbhi

火山引擎 最新活动