SSH连接经常断开是一个常见问题,通常与网络环境、服务器配置或客户端设置有关。以下是可能的原因和解决方法:
主要原因及解决方案
1. 网络不稳定或超时
-
原因:网络波动或NAT超时
-
解决方案:
-
在SSH客户端配置中启用保持连接:
bash
复制
下载# 修改或创建 ~/.ssh/config 文件 Host * ServerAliveInterval 60 ServerAliveCountMax 3
-
或者在服务器端配置(需要root权限):
bash
复制
下载# 修改 /etc/ssh/sshd_config ClientAliveInterval 60 ClientAliveCountMax 3
然后重启SSH服务:
service sshd restart
-
2. 防火墙/安全组设置
-
原因:云服务商的防火墙或安全组设置了会话超时
-
解决方案:
-
检查云平台的安全组规则
-
调整TCP会话保持时间
-
3. 云主机负载过高
-
原因:CPU或内存资源不足
-
解决方案:
-
使用
top
或htop
检查系统资源使用情况 -
优化高负载进程
-
4. TCP Keepalive设置
-
解决方案:
bash
复制
下载# 临时设置(重启失效) echo 30 > /proc/sys/net/ipv4/tcp_keepalive_time echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes echo 5 > /proc/sys/net/ipv4/tcp_keepalive_intvl # 永久设置(添加到/etc/sysctl.conf) net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_intvl = 5
然后执行
sysctl -p
生效
其他建议
-
使用
tmux
或screen
保持会话:bash
复制
下载# 安装screen sudo apt-get install screen # Debian/Ubuntu sudo yum install screen # CentOS/RHEL # 使用 screen
-
检查网络质量:
bash
复制
下载ping 您的云主机IP mtr 您的云主机IP
-
尝试更换SSH端口(某些网络可能限制22端口)
-
如果是移动网络,尝试使用有线网络或更稳定的WiFi
如果以上方法都不能解决问题,可能需要联系云服务商技术支持,检查是否有特殊的网络限制策略。