Ubuntu SFTP连接不稳定的排查与加固
一 快速缓解与自动重连
sudo apt-get update && sudo apt-get install lftplftp sftp://用户名@主机名sudo apt-get install screen 或 sudo apt-get install tmuxscreen -S sftp-session 或 tmux new-session -s sftp-session,在会话内启动 SFTPsudo apt-get install autosshautossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -p 端口 用户名@主机名-M 0 禁用旧式监控端口。二 服务端加固与保活配置
/etc/ssh/sshd_config,添加或修改:
ClientAliveInterval 60ClientAliveCountMax 3sudo systemctl restart sshdgrep Subsystem /etc/ssh/sshd_config(常见为 Subsystem sftp /usr/lib/openssh/sftp-server)sudo ufw allow 22/tcp;firewalld 执行
sudo firewall-cmd --permanent --add-port=22/tcpsudo firewall-cmd --reloadsudo systemctl status sshd(若未安装:sudo apt install openssh-server)sudo sed -i 's/^#MaxStartups 10:30:100/MaxStartups 10000/' /etc/ssh/sshd_config && sudo systemctl restart sshdsudo tail -f /var/log/auth.log(或 /var/log/secure)以捕捉断开原因。三 客户端侧排查与优化
sftp -i 私钥 用户名@主机名 或 ssh -vvv -i 私钥 用户名@主机名 获取详细握手与认证过程~/.ssh/config 为目标主机增加:
ServerAliveInterval 30ServerAliveCountMax 3Host your-host HostName 主机名 User 用户名 ServerAliveInterval 30 ServerAliveCountMax 3 StrictHostKeyChecking no UserKnownHostsFile /dev/nullStrictHostKeyChecking no 仅用于临时测试,生产环境不建议chmod 600 ~/.ssh/id_rsa(或对应私钥)chmod 644 ~/.ssh/known_hostsProxyCommand none 验证。四 常见报错对照与处理
| 现象 | 可能原因 | 快速处理 |
|---|---|---|
| Connection refused | SSH 服务未运行/未安装、端口未放行 | sudo systemctl status sshd;未安装则 sudo apt install openssh-server;放行 22/TCP 或改用正确端口 |
| ssh_exchange_identification: read: Connection reset by peer | 服务器/中间设备主动重置、空闲超时、资源限制、网络不稳 | 检查服务器负载与日志、开启保活(ClientAliveInterval/ServerAliveInterval)、排查防火墙/负载均衡器空闲超时 |
| 隔一段时间自动断开 | 链路空闲被防火墙/设备回收 | 两端配置保活(建议 30 秒发送一次),必要时使用 autossh 自动重连 |
| Permission denied | 用户名/密码或密钥错误、权限配置不当 | 用 ssh -vvv 定位认证阶段;核对密钥权限 600;必要时临时启用密码登录验证凭据 |
| 间歇性速度极慢或卡顿 | 加密算法不匹配、网络抖动、服务器负载高 | 调整双方加密套件(如优先 chacha20-poly1305@openssh.com 或 aes128-ctr)、优化网络、降低并发/分时传输 |