在 CentOS 系统中修复 SSH 配置,通常分为 配置文件修复、服务修复、权限修复、防火墙/端口修复 等几类。下面按最常见的场景给你一套排查与修复流程,你可以按顺序检查。
systemctl status sshd
systemctl restart sshd
journalctl -xe -u sshd
SSH 主配置文件:
/etc/ssh/sshd_config
sshd -t
✅ 没有任何输出 → 配置正常
❌ 有报错 → 按提示修复
# 默认
Port 22
检查是否被改成不存在的端口:
ss -lntp | grep ssh
PermitRootLogin yes
修改后重启:
systemctl restart sshd
PasswordAuthentication yes
PermitEmptyPasswords no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如果改了权限,SSH 会直接拒绝登录。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R 用户名:用户名 ~/.ssh
示例:
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
chown -R root:root /root/.ssh
rm -f /etc/ssh/ssh_host_*
ssh-keygen -A
systemctl restart sshd
firewall-cmd --list-ports
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload
查看状态:
getenforce
setenforce 0
如果 SSH 恢复,说明是 SELinux 问题:
restorecon -Rv /root/.ssh
restorecon -Rv /etc/ssh
yum reinstall openssh-server -y
systemctl enable sshd
systemctl restart sshd
| 现象 | 原因 |
|---|---|
| 连接拒绝 | sshd 未启动 / 端口错 |
| 登录失败 | 密码认证关闭 |
| 密钥不生效 | 权限不对 |
| 无法 root 登录 | PermitRootLogin |
| 本地能连,外部不能 | 防火墙 |
Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
UseDNS no
如果你愿意,可以把 报错信息、sshd -t 输出、systemctl status sshd 发出来,我可以帮你精准定位 ✅