云服务器 SSH 连接不上怎么排查?超时、拒绝与密钥错误

根据客户端错误定位网络、云防火墙、sshd 监听和认证配置所在层级

按 SSH 超时、Connection refused、Permission denied 和主机密钥变化分类,排查实例、公网路径、安全组、系统防火墙、sshd 与密钥权限。

按错误分层:Connection timed out 先查公网 IP、路由、安全组和防火墙;Connection refused 表示主机可达但端口没有服务;Permission denied 才查用户名、密码或密钥。先在本地运行 ssh -vvv 保存证据。只读检查不改数据,修改 sshd 前必须保留控制台连接和旧会话。

排障前不要关闭现有可用会话。修改 sshd 配置必须先做语法检查,并保留云控制台 VNC、串行终端或救援模式等恢复路径。

SSH 错误对应哪一层

云服务器 SSH 超时、拒绝连接和认证失败的分层排查路径
先根据客户端错误定位层级,可以避免反复修改无关安全组或密码。
现象优先检查
Connection timed out公网 IP、路由、安全组、NACL、防火墙
Connection refusedsshd 未监听、端口错误、服务未启动
Permission denied用户名、密钥、权限和认证策略
Host key verification failed实例是否重装或 IP 是否复用,先核验指纹
No route to host客户端网络、路由、VPN 与目标地址

客户端怎样收集有效信息

使用详细模式连接,替换用户、地址和端口:

ssh -vvv -p SSH_PORT USER@SERVER_IP

输出会显示 DNS、TCP 建连、主机密钥、客户端尝试的密钥和服务端拒绝阶段。日志可能包含用户名、地址和文件路径,对外发送前应脱敏。

连接超时怎样排查

  1. 确认实例处于运行状态并选择正确 Region;
  2. 确认当前公网 IP、EIP 或负载入口没有变化;
  3. 确认安全组入站允许当前客户端 IP 到 SSH 端口;
  4. 确认子网路由和 Internet Gateway/NAT 方向;
  5. 确认网络 ACL 同时允许入站和返回流量;
  6. 通过云控制台登录,检查 UFW/firewalld 和 sshd。

客户端当前公网出口可能与浏览器显示或办公室固定地址不同,VPN、移动网络和运营商 NAT 都会改变来源。

Connection refused 怎么处理

通过控制台终端检查服务和监听:

sudo systemctl status ssh
sudo ss -lntp | grep ssh
sudo sshd -t

不同系统服务名可能是 sshsshd。如果配置语法错误,先恢复最后一次已知可用版本,不要反复重启。

Permission denied 怎样区分原因

  • 用户名:云镜像可能使用 ubuntu、ec2-user、debian 等,不一定是 root;
  • 私钥:确认选中了与实例公钥对应的文件;
  • 本地权限:OpenSSH 会拒绝权限过宽的私钥;
  • 服务端权限:~/.sshauthorized_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 配置的安全流程

  1. 保持现有会话;
  2. 备份配置并检查 include 文件;
  3. 运行 sudo sshd -t
  4. 重新加载而不是盲目停止服务;
  5. 第二个终端验证登录与 sudo;
  6. 失败时从原会话恢复。

常见问题

安全组已经开放 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。不要发送私钥、密码或完整认证日志。

云服务器教程Vue、React 单页应用刷新后 404 怎么办?Nginx History 路由与 API 分流2026-09-13云服务器教程Docker 提示 pull access denied 怎么办?镜像名、仓库权限与登录排查2026-09-13云服务器教程MySQL 报 ERROR 1205 Lock wait timeout 怎么办?阻塞事务与安全止损2026-09-12

加入开发者交流社区

与全球开发者、运维和工作室一起交流技术、分享经验、配置、账号与最新优惠信息

  • 云平台使用交流
  • 资源优惠信息
  • 最新教程与资讯
  • 开发者经验分享
联系 Telegram 客服
加入开发者交流社区