云服务器空闲自动断开?最有效的 SSH 保持在线方案汇总
·
文章目录
云服务器 10 分钟不操作自动断开 SSH,一般不是服务器的问题,而是:
- ssh 客户端会断开
- ssh 服务端有超时策略
- 中间跳板机 / 防火墙 / 云厂商网关会超时断开
- 运营商 NAT 会断开空闲连接
解决方式有 客户端保活、服务端保活、两端同时保活 三种。
方案 1:客户端开启 SSH KeepAlive(本地机器设置)
macOS / Linux 本地执行:
编辑 SSH 配置文件:
vim ~/.ssh/config
添加:
Host *
ServerAliveInterval 60
ServerAliveCountMax 1000
含义:
- ServerAliveInterval 60 → 每 60 秒发一次心跳包
- ServerAliveCountMax 1000 → 容忍 1000 次失败(基本不会断)
🔒 全平台最稳通用配置!
重连后生效。
方案 2:开启服务端 SSH 保活(在云服务器上设置)
在服务器上执行:
sudo vim /etc/ssh/sshd_config
添加或修改:
ClientAliveInterval 60
ClientAliveCountMax 1000
然后重启 SSH:
sudo systemctl restart sshd
这会让服务器每 60 秒给客户端发心跳,让连接保持活跃。
方案 3:最强组合(客户端 + 服务端双保活)
如果网络中间设备(运营商 NAT、防火墙、路由器)有超时,这个组合最稳。
- 客户端:
ServerAliveInterval 60 - 服务端:
ClientAliveInterval 60
双向心跳,基本不可能断。
方案 4:使用 TMUX / SCREEN(不怕断线)
这是高级方案:
即使 SSH 断线,你的程序不会停止。
安装 tmux:
sudo apt install -y tmux
启动:
tmux
断开 SSH 再登录,输入:
tmux attach
就能回到原来的环境。
适合长时间运行脚本 / 部署 / 训练模型。
方案 5:使用 MobaXterm、FinalShell(自带 KeepAlive)
如果你用 Windows:
- MobaXterm(自动发送 keepalive)
- FinalShell(也有保持连接功能)
直接开启即可。
方案 6:使用 SSH 的 -o 参数临时开启保活
无需修改配置文件:
ssh -o ServerAliveInterval=60 root@你的服务器IP
适合临时使用。
方案 7:如果你的云厂商有「空闲超时设置」
例如部分中国云厂商(腾讯云、阿里云、华为云)会在控制台网络层断开长期 idle 会话。
检查你的云服务器控制台是否有:
- 会话超时设置
- 安全组 TCP 超时
- SLB 空闲超时
如果有,改成:
- 1200 秒(20 分钟)
- 或者直接最大(7200 秒)
也能避免断开。
更多推荐
所有评论(0)