首页/系统/信创系统运维速查/SSH 连不上的分支定位
常见问题65 条

SSH 连不上的分支定位

SSH 连不上完看报错:refused 查服务与端口,timeout 查网络与规则,两条路径分开排查能省大量时间。

信创系统运维速查系统更新于 2026-10-13

SSH 连不上怎么分流排查

SSH 连不上时,报错文本已经把问题分成两条路径:连接被拒绝(refused)说明网络可达但端口上没有服务或访问被明确拒绝,方向是查服务状态、端口与监听地址;连接超时(timeout)说明报文被丢弃或链路不通,方向是查网络连通性、防火墙与安全组。先把两类情况分开,再谈具体修复,能省下大量来回试错的时间。

基本信息

客户端详查ssh -vvv 输出握手过程与失败点
服务端检查ss -lntp 看监听,systemctl status 看服务状态
端口变更改过端口时需同步放行新端口
监听地址ListenAddress 只绑内网时外部无法连接
两端记录服务端认证与连接日志可对照

典型使用场景

  • 远程登录失败,需要快速区分是服务问题还是网络问题
  • 服务器重启后 SSH 未自动启动,导致无法远程管理
  • 修改端口后忘记更新防火墙规则,连接被拒或超时
  • 云主机安全组未放行导致连接一直卡住
  • 批量终端无法登录排查,对比可登录与不可登录机器的差异
  • 排障前评估自身通道风险,避免把管理通道也改坏
  • 为带外管理与串口备路做准备,作为远程通道不可用时的兜底

按报错分流

按报错分流
ssh -vvv user@host 2>&1 | tail -20      # 客户端详细过程
# 服务端侧检查:
ss -lntp | grep sshd                    # 端口与监听地址
systemctl status sshd --no-pager | head  # 服务是否运行
systemctl enable sshd                   # 设置为开机自启
firewall-cmd --list-all 2>/dev/null | grep -A3 ssh   # 防火墙规则
# 改过端口的场景:firewall-cmd --add-port=2222/tcp --permanent
# firewall-cmd --reload
# 从其它机器测试端口可达性:
# nc -vz <服务器IP> 22
tail -50 /var/log/secure 2>/dev/null | grep -iE 'fail|refus|denied'

两类报错对照

报错含义排查方向
Connection refused端口可达但无服务或明确拒绝服务状态、端口、监听地址
Connection timed out报文被丢弃或链路不通网络连通性、防火墙、安全组
No route to host路由或地址层问题地址配置、网段与网关
Permission denied认证失败账号、密钥、认证方式与权限
Network is unreachable本机网络未就绪本机网卡与路由表
远程修改 sshd 配置前保留一个已登录会话,改完先做配置语法校验再重载:一旦改错又没有备用通道,就只能依赖带外管理或串口恢复。
云安全组与系统防火墙是两层独立防护,只查其中一层很容易得出错误结论;排查清单里应把两层都列出来逐条确认。

易错点

  • 不区分 refused 与 timeout 直接改配置,方向错误导致无效操作反复出现
  • 改完 sshd 配置不校验语法就重载,服务启动失败同时失去远程通道
  • 忘记开放新端口或只改一处规则,端口可达性问题在两层防护间来回
  • 监听地址只绑内网却按外部访问方式排查,浪费大量时间

数据来源与参考

  • man 5 sshd_config
  • man 1 ssh
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌