rmdir.cn
← 排障手册

SSH 连接失败排障

按超时、拒绝连接、认证失败和指纹变化分支排查,不绕过主机身份校验。

适用范围与前提

OpenSSH 客户端与 Linux sshd;需要服务器控制台时联系管理员。

  • 替换 user@example.com 和身份文件路径,仅连接获授权的主机。
  • 调试输出可能包含用户名、地址和文件路径;不要分享私钥。
  • 服务端排查通过已有可信会话或控制台进行,保留可回退的登录通道。

命令仅供手动复制到获授权的环境执行。站点不会连接服务器;涉及网络的诊断可能产生请求或登录审计记录。

1. 用有限超时区分失败阶段

ssh -vvv -o ConnectTimeout=10 user@example.com

预期现象:会发起实际连接。区分连接超时、拒绝连接、Permission denied 与 REMOTE HOST IDENTIFICATION HAS CHANGED。

2. 通过控制台检查服务与监听

sudo ss -ltnp
systemctl status sshd --no-pager
sudo journalctl -u sshd -n 100 --no-pager

预期现象:部分发行版服务名为 ssh。确认端口、监听地址、路由与访问策略;超时不一定由 sshd 引起。

3. 检查实际配置与本地文件权限

ssh -G user@example.com
ls -ld ~/.ssh
ls -l ~/.ssh/config ~/.ssh/id_ed25519

预期现象:确认 user、hostname、port、identityfile;检查属主和权限。服务端由管理员核对 authorized_keys、账号状态及认证日志,不盲目修改权限。

4. 独立核验服务端主机指纹

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

预期现象:在服务端可信控制台执行,算法应与客户端提示一致。通过独立可信渠道对照指纹,变化可能源自合法重建,也可能是中间人风险。

修复建议(需人工确认)

  • 由管理员核对服务、路由和最小必要访问策略,不关闭防火墙或 SELinux 绕过问题。
  • 修复用户、密钥路径、属主或权限前先备份配置并确认影响,不开启 agent forwarding 作为通用修复。
  • 仅在独立确认合法主机密钥变更后,备份 known_hosts 并人工更新对应记录;不得禁用 StrictHostKeyChecking。
完成经确认的修复后,验证恢复

验证恢复

  • 使用正常主机身份校验重新登录,确认用户名与目标主机身份。
  • 需要修改 sshd 时先检查语法并保留原会话,由管理员在新会话验证恢复后再结束旧会话。

升级求助前收集

  • 脱敏连接阶段错误、目标端口、服务日志、独立核验的公开主机指纹及近期变更。