服务覆盖:昆明·曲靖·玉溪·保山·昭通·丽江·普洱·临沧·楚雄·红河·文山·西双版纳·大理·德宏·怒江·迪庆

SSH连不上服务器?别急着重装系统,这6个排查步骤能救回80%的机器

eycit 2026-04-23 1 次阅读 系统安装
---

theme: default themeName: "默认主题" title: "SSH连不上服务器?别急着重装系统,这6个排查步骤能救回80%的机器"


SSH连不上服务器?别急着重装系统,这6个排查步骤能救回80%的机器

客户急吼吼地打电话来:"服务器连不上了!密码是对的但就是登不进去,你们能远程帮忙看看吗?"

我说:"远程?远程首先要能连上啊。"

这种事不算罕见。SSH连不上服务器,原因五花八门:网络断了、sshd挂了、防火墙改了、磁盘满了、密码过期……有些能远程处理,有些必须上机房。今天把排查思路整理一下,以后遇到类似情况按这个流程走,能省不少事。

第一步:先确认网络通不通

听起来像废话,但这真的是第一步。用ping测试:

ping 服务器IP

如果ping不通,先排查网络层面的问题:

  • 机房断电或网络设备故障:这种概率不大,但确实有
  • IP地址冲突:DHCP分配异常或者人为配置错误
  • 路由问题:网关配置变了,或者上游路由器抽风

如果ping通但SSH连不上,继续往下走。

第二步:检查端口是否监听

用telnet或nc测试22端口:

telnet 服务器IP 22

或者

nc -zv 服务器IP 22

如果连不上,说明SSH服务没在跑,或者被防火墙挡了。

分两种情况:

情况一:端口完全不响应

可能是防火墙规则变了。如果你有其他方式能连上(比如控制台、带外管理),检查iptables或firewalld:

iptables -L -n | grep 22

firewall-cmd --list-ports

如果你刚改过防火墙规则然后就连不上了……恭喜,你把自己关在门外了。解决方案后面说。

情况二:端口有响应但握手失败

可能是SSH版本兼容问题,或者sshd配置有问题。用`ssh -v`看详细日志:

ssh -vvv user@服务器IP

根据报错信息定位问题。

第三步:检查SSH服务状态

如果控制台能连上,直接检查sshd状态:

systemctl status sshd

常见问题:

  • sshd没启动:`systemctl start sshd`
  • sshd启动失败:检查配置文件语法 `sshd -t`

- 端口被占用:`netstat -tlnpgrep :22`

如果sshd反复启动失败,八成是配置文件改坏了。用`sshd -t`检查语法,根据报错修复。

第四步:检查磁盘空间

这个坑我踩过。磁盘满了,sshd没法写日志,直接罢工。

进控制台执行:

df -h

如果根分区使用率100%,先清理空间:

# 找大文件
du -sh /*sort -rhhead -10

清理日志

/var/log/messages
/var/log/syslog

清理tmp

rm -rf /tmp/*

清理出几百MB空间,sshd就能正常启动了。

第五步:检查SELinux和防火墙

SELinux有时候会阻止SSH连接,特别是改过端口之后。

# 检查SELinux状态

getenforce

如果是Enforcing,临时关闭

setenforce 0

检查SSH端口是否被SELinux允许

semanage port -lgrep ssh

如果改了SSH端口(比如改成2222),要在SELinux里加白名单:

semanage port -a -t ssh_port_t -p tcp 2222

防火墙同理:

firewall-cmd --add-port=2222/tcp --permanent

firewall-cmd --reload

第六步:检查用户和认证

以上都正常,问题可能出在用户层面:

密码过期了
chage -l 用户名

修改过期时间

chage -M 99999 用户名

用户被锁定
# 检查锁定状态

passwd -S 用户名

解锁

passwd -u 用户名

或者pam_tally2重置失败计数

pam_tally2 --user 用户名 --reset

公钥认证失败

检查`.ssh/authorized_keys`文件权限:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

权限太宽松,SSH会拒绝公钥认证。

把自己关门外的急救方案

这是最尴尬的情况——改了防火墙或SSH配置,保存退出,然后发现连不上了。

预防措施:

用at命令设置自动回滚
# 5分钟后如果没确认就回滚

at now + 5 minutes <

改完配置确认没问题后,删掉at任务:

atq  # 查看任务号

atrm 任务号

如果已经锁死,解决方案:

  • 控制台/带外管理:大多数云服务器都提供控制台,能绕过SSH直接操作
  • 物理机房:让机房值班帮忙接显示器键盘
  • LiveCD:重启进救援模式,挂载磁盘修改配置

最后唠叨几句

SSH连不上不可怕,可怕的是慌。按这六个步骤排查,大部分问题都能定位。关键是:

  • 先网络后服务:网络通不通是第一步
  • 先简单后复杂:查日志、查状态,别上来就改配置
  • 改配置要留后路:at回滚或者开多个终端

如果你手头没有控制台访问权限,SSH又挂了,只能认命。所以平时要把带外管理配好,出问题能自救。

看完还有什么疑问吗?

如果文章没有覆盖到你的情况,欢迎联系我们咨询——免费解答,说清楚再决定要不要服务。

📞 服务热线:13708730161 💬 微信:eyc1689 📧 邮箱:service@eycit.com 🌐 https://www.eycit.com

易云城IT服务,您身边的IT专家。

上一篇
数据库查询慢到怀疑人生?这几个索引优化技巧让你的查询提速...
下一篇
勒索病毒离你有多远?这家公司被勒索50万,数据全没了只因...