网络问题是SSH超时的常见原因,需优先排查:
ping <服务器IP>命令测试客户端与服务器的连通性,若丢包率高或无法ping通,需检查物理网线、Wi-Fi信号或路由器配置。traceroute <服务器IP>(Linux)或tracert <服务器IP>(Windows)命令检查网络路径中的延迟或阻断点,确认网络路由是否正常。确保SSH服务已启动并正常运行:
systemctl status sshd命令,若服务未运行,使用systemctl start sshd启动服务;若需开机自启,执行systemctl enable sshd。netstat -tulnp | grep 22,若端口被占用,需修改/etc/ssh/sshd_config中的Port参数为其他端口(如2222),并更新防火墙规则。修改/etc/ssh/sshd_config文件,优化超时相关参数:
UseDNS no,避免SSH连接时因DNS解析失败导致超时。TCPKeepAlive yes,保持TCP连接活跃,防止中间网络设备断开空闲连接。ClientAliveInterval 60(服务器每60秒向客户端发送一次保持连接信号)和ClientAliveCountMax 3(若客户端3次未响应,则断开连接,总超时时间为180秒)。GSSAPIAuthentication no,减少认证过程中的延迟。systemctl restart sshd使配置生效。在客户端本地配置SSH保持连接,避免因客户端空闲导致超时:
~/.ssh/config文件(若不存在则创建),添加以下内容:Host *
ServerAliveInterval 60 # 客户端每60秒向服务器发送一次保持连接信号
ServerAliveCountMax 3 # 允许最多3次无响应,总超时180秒
保存后,客户端后续连接将自动应用此配置。
确保防火墙或SELinux未阻止SSH连接:
firewall-cmd --list-all查看是否允许SSH服务(ssh),若未允许,执行firewall-cmd --permanent --add-service=ssh添加规则,然后firewall-cmd --reload重新加载配置。Enforcing模式,执行setenforce 0临时关闭(测试是否解决问题),若需永久关闭,修改/etc/selinux/config中的SELINUX=disabled。若/var/log/btmp文件过大(记录失败登录尝试),可能导致SSH读取缓慢:
echo > /var/log/btmp清空文件(需root权限),减少登录时的文件读取负担。若因网络波动导致SSH断开,可使用tmux或screen工具保持会话:
sudo yum install tmux,启动tmux,断开后可重新连接并恢复会话(tmux attach)。sudo yum install screen,启动screen,断开后可重新连接并恢复会话(screen -r)。若服务器负载过高(CPU、内存占用率超过80%),可能导致SSH响应缓慢:
top或htop命令查看系统负载,关闭不必要的进程(如大型计算任务、未使用的服务),或升级服务器硬件(如增加CPU、内存)。以上方法覆盖了SSH连接超时的常见原因,按顺序排查即可解决大部分问题。若问题仍未解决,建议查看/var/log/secure日志文件,获取具体错误信息(如“Connection timed out”“Permission denied”),进一步针对性排查。