温馨提示×

CentOS怎么修复SSH配置

小樊
42
2026-07-07 23:24:26
栏目: 智能运维

在 CentOS 系统中修复 SSH 配置,通常分为 配置文件修复、服务修复、权限修复、防火墙/端口修复 等几类。下面按最常见的场景给你一套排查与修复流程,你可以按顺序检查。


一、先确认 SSH 服务状态

systemctl status sshd

如果服务没启动或启动失败

systemctl restart sshd
journalctl -xe -u sshd

二、检查 SSH 配置文件(最常见问题)

SSH 主配置文件:

/etc/ssh/sshd_config

1️⃣ 检查语法错误

sshd -t

✅ 没有任何输出 → 配置正常
❌ 有报错 → 按提示修复


2️⃣ 常见错误配置修复示例

✅ 端口被改坏

# 默认
Port 22

检查是否被改成不存在的端口:

ss -lntp | grep ssh

✅ 禁用了 root 登录

PermitRootLogin yes

修改后重启:

systemctl restart sshd

✅ 密码登录被关闭

PasswordAuthentication yes

✅ 禁止了所有登录

PermitEmptyPasswords no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

三、修复 .ssh 目录和文件权限(非常常见)

如果改了权限,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

四、重新生成 SSH 密钥(如果丢失)

rm -f /etc/ssh/ssh_host_*
ssh-keygen -A
systemctl restart sshd

五、防火墙 & SELinux 修复

1️⃣ 防火墙(firewalld)

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

2️⃣ SELinux(很多人忽略)

查看状态:

getenforce

临时关闭测试:

setenforce 0

如果 SSH 恢复,说明是 SELinux 问题:

restorecon -Rv /root/.ssh
restorecon -Rv /etc/ssh

六、完全重置 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 发出来,我可以帮你精准定位 ✅

0