在 CentOS 上 SSH 连接报错,可以按下面思路逐步排查。我先给你通用排查流程,再列出常见错误及对应解决办法。
ping 服务器IP
telnet 服务器IP 22
# 或
nc -vz 服务器IP 22
systemctl status sshd
若未运行:
systemctl start sshd
systemctl enable sshd
firewall-cmd --list-all
如 22 端口未放行:
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload
getenforce
如为 Enforcing,可临时测试:
setenforce 0
原因
解决
systemctl start sshd
ss -lntp | grep sshd
原因
解决
原因
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
原因
检查
grep 用户名 /etc/shadow
grep 用户名 /etc/ssh/sshd_config
原因
解决
ssh -o IdentitiesOnly=yes user@ip
原因
检查
cat /etc/hosts.deny
cat /etc/hosts.allow
journalctl -u sshd -f
# 或
tail -f /var/log/secure
连接时看报错最直接。
如果你能贴出具体报错信息(客户端 + /var/log/secure),我可以直接帮你定位到具体原因。