在 CentOS 系统中修复 SSH 配置,通常分为配置文件修复、权限修复、服务问题排查三大类。下面按常见场景给你一个实用排查与修复指南(适用于 CentOS 7 / 8 / Stream)。
systemctl status sshd
active (running):服务正常failed / inactive:服务未启动或配置错误启动 / 重启:
systemctl start sshd
systemctl restart sshd
如果启动失败,继续往下看。
SSH 主配置文件:
/etc/ssh/sshd_config
sshd -t
✅ 无输出 = 配置正常
❌ 有输出 = 配置错误(会提示哪一行有问题)
示例错误:
/etc/ssh/sshd_config line 45: unsupported option
Port 22
✅ 确保没有被改成不存在或冲突的端口
❌ 错误示例:
Port abc
修复:
vi /etc/ssh/sshd_config
改回:
Port 22
重启:
systemctl restart sshd
PermitRootLogin yes
如果你被锁在外面,可临时改为:
PermitRootLogin yes
如果你用密钥登录失败:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
检查权限(非常重要):
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R 用户名:用户名 ~/.ssh
查看 SELinux 状态:
getenforce
如果是 Enforcing,尝试临时关闭测试:
setenforce 0
systemctl restart sshd
✅ 如果这样能启动,说明是 SELinux 问题
修复方法:
restorecon -Rv /etc/ssh
restorecon -Rv ~/.ssh
chmod 600 /etc/ssh/ssh_host_*
chmod 644 /etc/ssh/ssh_host_*.pub
如果主机密钥丢失,可重新生成:
ssh-keygen -A
systemctl restart sshd
ss -lntp | grep ssh
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
如果你改乱了,可以恢复默认配置:
cp /etc/ssh/sshd_config.rpmsave /etc/ssh/sshd_config
或重装 SSH:
yum reinstall openssh-server -y
systemctl restart sshd
sshd -t
systemctl status sshd
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
getenforce
ss -lntp | grep ssh
你可以直接贴出:
sshd -t 的输出systemctl status sshd 的输出我可以直接帮你定位是哪一行配置或权限问题 ✅