SSH 连不上怎么办:最常见8个原因和排查顺序

SSH连不上服务器的原因,80%集中在端口、密码、密钥、防火墙、网络这五个地方。按本文的顺序一个个查,通常5分钟内能找到问题。

适用人群

  • 刚购买云服务器不知道如何连接的新手
  • 之前连接正常突然连不上的运维人员
  • 帮客户部署服务器经常需要远程排障的技术支持

按这个顺序查,少走弯路

第一步:确认IP地址和端口是否正确

这是最低级也最常见的错误。拿到服务器信息之后,先确认公网IP是否填对了(不是内网IP),SSH端口是否填对了(默认是22,但不是所有商家都用22)。

很多云厂商新机器会随机生成一个高位端口,比如20222、37221,而不是默认的22。如果不确定,先去控制台看端口信息。

连接命令是 ssh -p 端口号 用户名@服务器IP

第二步:确认密码或密钥是否正确

密码登录和密钥登录是两种完全不同的方式。密码登录要先确认是否用的是正确的用户名(通常是root),如果忘了root密码,可以在控制台通过VNC或重置密码功能解决。

密钥登录则要确认公钥是否已经写入服务器的~/.ssh/authorized_keys,常见错误是本地私钥和服务器公钥不匹配,或者权限设置不对。

检查密钥权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

第三步:确认防火墙是否开放了端口

这是国内云服务器最常见的SSH连不上的原因,没有之一。在服务器上检查iptables或firewalld规则,用 firewall-cmd --list-ports 查看已开放端口。

但更重要的是云控制台的安全组规则——这是最容易忽略的地方。很多服务器在控制台的安全组里默认没有开放SSH端口,需要手动加一条”允许TCP 22端口入站”。

第四步:确认SSH服务是否在运行

有时候服务器负载过高或者SSH服务异常退出,也会导致连不上。通过云控制台的VNC或救生席(rescue mode)登录后检查 systemctl status sshd,如果服务停了,用 systemctl restart sshd 重启。

第五步:确认本地网络是否限制了SSH连接

公司网络、校园网络、部分VPN可能会封锁22端口或限制SSH流量。可以尝试切换到手机热点测试,或者使用443端口(ssh -p 443 user@host)尝试连接,因为443通常不会被封锁。

第六步:确认是否是CPU或内存满载导致的假死

服务器如果CPU跑满或者内存耗尽,SSH服务可能会变得极慢甚至无响应,看起来就像”连不上”。通过云控制台的监控面板查看CPU和内存使用率。如果确认是这个原因,需要先通过VNC登录进去结束高占用进程,或者重启服务器。

第七步:确认是否触发了fail2ban或类似防护机制

如果服务器安装了fail2ban,连续输错密码多次后IP会被临时封禁。这种情况下等10-15分钟会自动解封,或者通过控制台VNC登录后清空封禁列表。用 cat /var/log/fail2ban.log | grep "Ban" 查看日志。

第八步:确认SSH配置文件中是否限制了登录来源

编辑/etc/ssh/sshd_config检查是否有AllowUsers、DenyUsers等限制,以及是否设置了ListenAddress 127.0.0.1(这样就只能本地登录)。修改配置后记得重启sshd:systemctl restart sshd

快速排查流程

SSH连不上 → 1.查IP和端口是否正确 → 控制台核对信息 → 2.查密码/密钥是否正确 → 试控制台VNC登录 → 3.查云控制台安全组规则 → 开放对应端口 → 4.查服务器防火墙 → iptables/firewalld → 5.查SSH服务状态 → systemctl status sshd → 6.换网络环境测试 → 手机热点 → 7.查监控数据 → CPU/内存是否满载 → 8.查fail2ban → 是否IP被封

一个真实案例

有个用户找我,说他的服务器突然SSH连不上了,之前一直正常。我让他按上面顺序查,结果发现是:他在部署一个Node应用的时候,进程把CPU跑满了,服务器假死,SSH服务虽然还开着但完全没响应。最后通过控制台强制重启才恢复。

这种情况单看SSH连不上,会以为是网络或配置问题,但实际上是资源耗尽。所以第六步”查CPU和内存”千万不要跳过。

你可能在想

SSH连接显示Connection refused是什么意思?

这通常意味着目标端口没有服务在监听,可能端口号填错了,或者SSH服务根本没运行。先检查端口号和服务状态。

云服务器安全组怎么配置才安全又不会把自己锁在外面?

最安全的方式是只开放必要端口,SSH优先使用密钥登录而非密码登录,来源IP尽量限定在你的IP地址段。但最重要的是:修改安全组规则之前,先开一个VNC窗口确认能连上,以防改完之后自己也连不上了。

密码对但还是Permission denied怎么办?

可能是用户名填错了(比如填了administrator而不是root),也可能是系统禁用了密码登录(查看sshd_config里的PasswordAuthentication yes/no)。用VNC登录服务器检查配置最直接。

服务器能ping通但SSH连不上是什么原因?

ping通说明网络层是通的,SSH连不上是传输层以上的问题。最大可能是安全组没有开放端口,其次是SSH服务没运行,或者防火墙拦截了22端口。

结论

SSH连不上大多数时候不是大问题,但需要按顺序排查。从IP端口 → 密码密钥 → 安全组 → 防火墙 → 服务状态,这个顺序查下来,95%的问题都能在5分钟内定位。如果都查完还连不上,再考虑是否是云厂商侧的限制或网络层面的问题。

Rate this post
赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《SSH 连不上怎么办:最常见8个原因和排查顺序》
文章链接:https://www.fuwu7.com/jiaocheng/8008.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到