Ubuntu 上 SFTP 频繁掉线,通常不是 SFTP 本身的问题,而是底层 SSH 连接不稳定或被服务器主动断开 导致的。下面按常见原因逐一说明,并给出对应解决办法。
服务器或客户端设置了空闲超时时间,长时间无操作会自动断开。
检查服务器配置:
sudo vi /etc/ssh/sshd_config
关注以下参数:
ClientAliveInterval 0
ClientAliveCountMax 3
建议修改为:
ClientAliveInterval 60
ClientAliveCountMax 3
修改后重启 SSH:
sudo systemctl restart ssh
客户端也可以加保活(推荐):
vi ~/.ssh/config
添加:
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
排查方法:
ping 服务器IP
mtr 服务器IP
如果丢包明显,SFTP 必然频繁断。
检查 /etc/ssh/sshd_config 中:
Subsystem sftp /usr/lib/openssh/sftp-server
如果被改成 internal-sftp 但配置错误,也可能异常断开。
如果你配置了:
ChrootDirectory /sftp
但目录权限不正确(必须 root 所有,且 755),会导致连接立刻断开。
正确示例:
sudo chown root:root /sftp
sudo chmod 755 /sftp
会导致:
查看:
free -h
top
dmesg | tail
常见问题:
✅ 修改 ClientAliveInterval
✅ 客户端加 ServerAliveInterval
✅ 检查网络丢包
✅ 查看 /var/log/auth.log
✅ 避免 chroot 权限错误
服务器上:
sudo tail -f /var/log/auth.log
客户端加 verbose:
sftp -v user@host
如果你愿意,可以告诉我:
我可以直接帮你定位具体原因。