在 CentOS 上使用 SFTP(基于 SSH) 时,连接断开通常是因为 SSH 空闲超时 导致的。可以通过客户端配置或服务端配置来实现“保活(keepalive)”。
编辑:
vi /etc/ssh/ssh_config
添加或修改:
ServerAliveInterval 60
ServerAliveCountMax 3
含义:
重启或重新连接即可生效。
vi ~/.ssh/config
内容:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
sftp -o ServerAliveInterval=60 user@host
编辑服务器配置:
vi /etc/ssh/sshd_config
添加或修改:
ClientAliveInterval 60
ClientAliveCountMax 3
然后重启 SSH:
systemctl restart sshd
⚠️ 需要 root 权限
lftp / curl 等工具有些 SFTP 客户端不支持 SSH keepalive,可改为:
lftp:set net:timeout 60
autossh(长期保活):autossh -M 0 -o ServerAliveInterval=60 user@host
如果是经过 NAT 或防火墙:
ServerAliveInterval 30
ssh -v user@host
观察是否有:
debug1:Sending env LC_*
及保活包交互日志
✅ 客户端:
ServerAliveInterval 60
✅ 服务端:
ClientAliveInterval 60
如果你是用于 脚本 / 自动化 / 跳板机 / 容器,可以告诉我具体场景,我可以给更合适方案。