温馨提示×

centos ssh报错如何排查

小樊
39
2026-09-14 20:49:41
栏目: 智能运维

在 CentOS 上 SSH 连接报错,可以按下面思路逐步排查。我先给你通用排查流程,再列出常见错误及对应解决办法


一、基础排查流程(通用)

1. 确认是否能连通服务器

ping 服务器IP
  • 不通:网络/防火墙/IP 问题
  • 通:继续往下

2. 确认 SSH 端口是否通

telnet 服务器IP 22
# 或
nc -vz 服务器IP 22
  • 不通:防火墙或 sshd 未启动

3. 查看 SSH 服务状态

systemctl status sshd

若未运行:

systemctl start sshd
systemctl enable sshd

4. 查看防火墙

firewall-cmd --list-all

如 22 端口未放行:

firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload

5. 查看 SELinux(偶尔影响)

getenforce

如为 Enforcing,可临时测试:

setenforce 0

二、常见 SSH 报错及处理

1. Connection refused

原因

  • sshd 没启动
  • 端口不是 22

解决

systemctl start sshd
ss -lntp | grep sshd

2. Connection timed out

原因

  • 服务器宕机
  • 防火墙阻断
  • 安全组(云服务器)未放开

解决

  • 检查云厂商安全组
  • 检查本地/机房防火墙

3. Permission denied (publickey)

原因

  • 使用了密钥但服务器不允许密码
  • 公钥未写入 authorized_keys

解决

# 服务端
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

或修改:

vi /etc/ssh/sshd_config
PasswordAuthentication yes
systemctl restart sshd

4. Permission denied (password)

原因

  • 密码错
  • 用户被禁止登录

检查

grep 用户名 /etc/shadow
grep 用户名 /etc/ssh/sshd_config

5. Too many authentication failures

原因

  • 密钥太多被拒

解决

ssh -o IdentitiesOnly=yes user@ip

6. ssh_exchange_identification: read: Connection reset

原因

  • hosts.deny / fail2ban 限制

检查

cat /etc/hosts.deny
cat /etc/hosts.allow

三、查看日志(最关键)

journalctl -u sshd -f
# 或
tail -f /var/log/secure

连接时看报错最直接。


四、快速自检清单

  • [ ] 网络通
  • [ ] 22 端口通
  • [ ] sshd 运行
  • [ ] 防火墙放行
  • [ ] 用户可登录
  • [ ] 密钥/密码正确

如果你能贴出具体报错信息(客户端 + /var/log/secure),我可以直接帮你定位到具体原因。

0