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 -tlnp | grep :22` |
如果sshd反复启动失败,八成是配置文件改坏了。用`sshd -t`检查语法,根据报错修复。
第四步:检查磁盘空间
这个坑我踩过。磁盘满了,sshd没法写日志,直接罢工。
进控制台执行:
df -h
如果根分区使用率100%,先清理空间:
# 找大文件
du -sh /* sort -rh head -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 -l grep 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专家。