Ubuntu SSH连接不稳定的常见原因及解决方法
网络丢包、高延迟或间断性断开是SSH连接不稳定的最常见原因。
ping 服务器IP检查连通性,traceroute 服务器IP查看路由路径是否存在异常(如某节点延迟极高或丢包);若使用无线网络,尝试切换至有线网络或更换Wi-Fi信道。mosh(Mobile Shell)替代SSH,其对网络波动的容忍度更高。默认的SSH配置可能无法适应长期运行或高并发场景,需调整以下关键参数:
/etc/ssh/sshd_config中添加/修改以下参数,防止因空闲超时断开:TCPKeepAlive yes
ClientAliveInterval 60 # 服务器每60秒向客户端发送心跳包
ClientAliveCountMax 3 # 若连续3次未收到响应,则断开连接(可根据需求调整)
MaxStartups 10:30:60 # 允许最多10个未认证连接,超过后按30%概率拒绝新连接,最多允许60个
MaxSessions 60 # 每个网络连接允许的最大会话数
sudo systemctl restart ssh使配置生效。防火墙可能误拦截SSH流量(默认端口22),导致连接中断。
sudo ufw status确认是否允许SSH(sudo ufw allow ssh或sudo ufw allow 22/tcp);sudo iptables -L -n检查是否有DROP或REJECT规则针对SSH端口。sudo ufw reload)。服务器CPU、内存或磁盘空间耗尽可能导致SSH服务崩溃或响应缓慢。
top(按CPU排序)、free -h(内存)、df -h(磁盘空间);sudo journalctl -u ssh(查看SSH服务日志)、sudo dmesg | grep -i ssh(内核日志),确认是否有“Out of memory”“Disk full”等错误。sudo apt autoremove、sudo rm -rf /tmp/*)。旧版本的SSH客户端或服务端可能存在协议兼容性问题,导致连接断开。
ssh -V,查看版本号(如OpenSSH_8.9p1 Ubuntu-3);若版本差距较大(如客户端为7.x,服务端为9.x),可能存在兼容性问题。sudo apt update && sudo apt upgrade openssh-client openssh-server)。密钥丢失、权限错误或密码输入错误可能导致连接中断(尤其是首次连接或密钥过期时)。
~/.ssh目录权限应为700,私钥文件权限应为600(chmod 700 ~/.ssh; chmod 600 ~/.ssh/id_rsa);ssh-keygen -t rsa -b 4096),并将公钥复制至服务器(ssh-copy-id user@host);若仍无法解决,暂时启用密码认证(PasswordAuthentication yes,修改/etc/ssh/sshd_config后重启服务)以排除密钥问题。若因网络波动或误操作导致会话断开,可使用tmux或screen保持会话持久化,断开后重新连接仍可恢复工作。
sudo apt install tmux # Ubuntu/Debian
tmux new -s mysession # 创建新会话
tmux attach -t mysession # 重新连接会话
通过以上步骤逐一排查,可有效解决Ubuntu SSH连接不稳定的问题。若问题仍存在,建议查看SSH日志(sudo tail -f /var/log/auth.log)获取具体错误信息,针对性解决。