温馨提示×

CentOS SSH连接不稳定怎么回事

小樊
34
2025-12-11 10:53:26
栏目: 智能运维

CentOS SSH连接不稳定的常见原因与排查步骤

一、常见成因概览

  • 空闲超时:服务器端或客户端开启了保活机制(如 ClientAliveInterval/ServerAliveInterval),或中间网络设备(防火墙、NAT、云安全组)对长时间空闲的 TCP 会话做清理。
  • 登录阶段卡顿:SSH 服务默认会做 DNS 反向解析GSSAPI 认证,解析慢或认证失败会显著拖慢连接建立或空闲后的首条输入。
  • 会话层自动退出:Shell 环境变量 TMOUT 设置了自动登出时间。
  • 网络与访问控制:链路抖动、丢包,或 firewalld/iptables/云安全组 规则限制、端口不通。
  • 服务端资源或日志问题:磁盘满、系统负载高、日志写入失败等导致会话异常。
    以上因素常交织出现,建议按“先网络、再服务、后会话”的顺序排查。

二、快速排查步骤

  • 检查网络连通与端口可达:
    • 使用 ping 测试基础连通(注意有些环境禁 ICMP,ping 不通不代表端口不通)。
    • 使用 telnet 22nc -zv 22 检查 22 端口;出现 Connection refused 多为服务未运行,Connection timed out 多为防火墙/安全组丢弃。
  • 查看服务端 SSH 服务状态与监听:
    • systemctl status sshd;确认 Port 22 监听且 ListenAddress 正确;必要时 systemctl restart sshd
  • 检查防火墙与安全组:
    • firewall-cmd --list-all;若未放行,执行 firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload
    • 云上实例同步检查 Security Group 入站规则是否允许 TCP 22
  • 客户端侧定位:
    • 使用 ssh -vvv user@host 观察卡在哪一阶段(DNS、密钥交换、认证)。
    • 核对密钥权限:chmod 600 ~/.ssh/id_rsachmod 700 ~/.ssh;使用 -i 指定正确私钥;必要时清理旧指纹 ssh-keygen -R <host|IP>
  • 服务端日志:
    • 查看 /var/log/secure/var/log/auth.log 中的认证与断开原因。
      以上步骤能快速定位“连不上、连得慢、老断线”的大致环节。

三、稳定连接的实用配置

  • 服务器端保持会话活跃(需 root 权限):
    • 编辑 /etc/ssh/sshd_config
      • 开启保活:TCPKeepAlive yes
      • 间隔心跳:ClientAliveInterval 60(每 60 秒发一次)
      • 最大重试:ClientAliveCountMax 3(连续 3 次无响应则断开)
    • 使配置生效:systemctl reload sshd(或 restart)。
  • 客户端保持会话活跃(无需改服务器):
    • 单次连接:ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@host
    • 永久生效:在 ~/.ssh/config 中添加
      • Host *
        • ServerAliveInterval 60
        • ServerAliveCountMax 3
  • 登录阶段提速(解决“连得慢”):
    • 编辑 /etc/ssh/sshd_config
      • UseDNS no(关闭反向 DNS)
      • GSSAPIAuthentication no(关闭 GSSAPI)
    • 使配置生效:systemctl restart sshd
  • 检查会话层自动退出:
    • 在服务器上检查 echo $TMOUT;若设置了值(如 180 秒),按需调整或取消:export TMOUT=1800(或移除该变量)。
      以上配置分别针对“空闲被断开”“登录慢”“会话自动退出”三类高频问题。

四、网络层面的优化与替代方案

  • 中间设备空闲超时:公司防火墙、家用路由器、运营商 NAT 常会清理长时间空闲的会话。若服务器/客户端保活配置无效,可与网络管理员沟通适当调大“TCP/UDP 会话超时”,或在出口设备开启 TCP keepalive
  • 高丢包/跨公网不稳定:优先使用有线或稳定网络;必要时更换端口、优化链路质量。
  • 替代工具:在移动/高抖动网络下,可考虑 Mosh(基于 UDP、支持断线自动重连):
    • 安装:sudo dnf install mosh(CentOS/RHEL/Fedora)
    • 连接:mosh user@server_ip
      以上措施可显著降低“Broken pipe/超时”类断连概率。

0