按 SSH 超时、Connection refused、Permission denied 和主机密钥变化分类,排查实例、公网路径、安全组、系统防火墙、sshd 与密钥权限。
按错误分层:Connection timed out 先查公网 IP、路由、安全组和防火墙;Connection refused 表示主机可达但端口没有服务;Permission denied 才查用户名、密码或密钥。先在本地运行 ssh -vvv 保存证据。只读检查不改数据,修改 sshd 前必须保留控制台连接和旧会话。
排障前不要关闭现有可用会话。修改 sshd 配置必须先做语法检查,并保留云控制台 VNC、串行终端或救援模式等恢复路径。
SSH 错误对应哪一层

| 现象 | 优先检查 |
|---|---|
| Connection timed out | 公网 IP、路由、安全组、NACL、防火墙 |
| Connection refused | sshd 未监听、端口错误、服务未启动 |
| Permission denied | 用户名、密钥、权限和认证策略 |
| Host key verification failed | 实例是否重装或 IP 是否复用,先核验指纹 |
| No route to host | 客户端网络、路由、VPN 与目标地址 |
客户端怎样收集有效信息
使用详细模式连接,替换用户、地址和端口:
ssh -vvv -p SSH_PORT USER@SERVER_IP输出会显示 DNS、TCP 建连、主机密钥、客户端尝试的密钥和服务端拒绝阶段。日志可能包含用户名、地址和文件路径,对外发送前应脱敏。
连接超时怎样排查
- 确认实例处于运行状态并选择正确 Region;
- 确认当前公网 IP、EIP 或负载入口没有变化;
- 确认安全组入站允许当前客户端 IP 到 SSH 端口;
- 确认子网路由和 Internet Gateway/NAT 方向;
- 确认网络 ACL 同时允许入站和返回流量;
- 通过云控制台登录,检查 UFW/firewalld 和 sshd。
客户端当前公网出口可能与浏览器显示或办公室固定地址不同,VPN、移动网络和运营商 NAT 都会改变来源。
Connection refused 怎么处理
通过控制台终端检查服务和监听:
sudo systemctl status ssh
sudo ss -lntp | grep ssh
sudo sshd -t不同系统服务名可能是 ssh 或 sshd。如果配置语法错误,先恢复最后一次已知可用版本,不要反复重启。
Permission denied 怎样区分原因
- 用户名:云镜像可能使用 ubuntu、ec2-user、debian 等,不一定是 root;
- 私钥:确认选中了与实例公钥对应的文件;
- 本地权限:OpenSSH 会拒绝权限过宽的私钥;
- 服务端权限:
~/.ssh和authorized_keys的所有者与权限必须正确; - 配置覆盖:检查
sshd_config.d、AllowUsers、PasswordAuthentication 和 PubkeyAuthentication; - 磁盘空间:根分区或 inode 满也可能让登录过程无法写入必要文件。
服务端可查看最近日志:
sudo journalctl -u ssh --since '-15 minutes'
sudo journalctl -u sshd --since '-15 minutes'仅执行当前系统存在的服务名。日志中的公网地址和用户名对外分享前要脱敏。
主机密钥变化能直接删除 known_hosts 吗
不能先删再说。主机密钥变化可能来自系统重装、实例替换或公网 IP 被重新分配,也可能意味着中间人风险。应先通过云控制台或可信渠道核对新指纹,确认资源确实发生变化后,再删除对应旧条目。
修改 SSH 配置的安全流程
- 保持现有会话;
- 备份配置并检查 include 文件;
- 运行
sudo sshd -t; - 重新加载而不是盲目停止服务;
- 第二个终端验证登录与 sudo;
- 失败时从原会话恢复。
常见问题
安全组已经开放 22 为什么仍超时?
还需核对公网地址、路由、NACL、系统防火墙和运营商出口;安全组只是链路的一层。
改了 SSH 端口为什么连接不上?
新端口必须同时被 sshd 监听、云安全组和系统防火墙允许,SELinux 环境还可能需要额外策略。
可以临时开放 0.0.0.0/0 排障吗?
不建议把扩大公网暴露当作默认排障方式。优先使用当前客户端 IP 和控制台终端逐层检查。
三条处理路径
- 超时:核对实例运行、公网地址、当前客户端公网 IP、安全组、NACL 和主机防火墙。
- 拒绝:通过控制台终端运行
ss -lntp、检查 sshd 状态和实际端口。 - 认证失败:按镜像核对用户名、私钥权限、绑定公钥和认证日志。
主机指纹变化不能直接清空 known_hosts;先确认是否重装、换 IP 或遭遇中间人风险。
验收与回退
配置修改前运行 sshd -t,新终端成功登录并确认 sudo 后再退出旧会话,重启后复测。失败时通过旧会话/控制台恢复 sshd 配置和安全组,不把 22 端口开放到全网,也不以重装系统代替排障。
云服务器 SSH 连接不上怎么排查现场验收单
- 入口或命令:本地 ssh -vvv;云控制台核对公网IP/安全组;控制台终端查 sshd 与日志
- 提交前风险:只读检查不收费;改安全组/sshd 不删数据但可能锁死登录,重装会丢系统盘
- 不能继续时:IP 变、来源地址变、端口改、sshd 未启动、用户名错、私钥权限/主机指纹异常
- 完成证据:新终端成功登录、sudo 正常、非授权来源拒绝,重启后仍可用
- 退出办法:始终保留控制台/旧会话;改配置前 sshd -t,失败恢复旧配置和安全组
完成这项任务后继续检查
参考资料
如果需要确认云平台账户、充值或 SSH 基础排障方向,可通过 Telegram 联系 @heishayun。不要发送私钥、密码或完整认证日志。

