温馨提示×

centos为何ssh密钥失效

小樊
35
2026-07-19 08:05:21
栏目: 智能运维

CentOS 中 SSH 密钥突然失效(无法登录)通常不是单一原因,而是 权限、配置、密钥格式或 SELinux 等常见问题叠加。下面按最常见 → 次常见顺序给你系统排查。


一、最常见原因:权限问题(90% 都在这)

1. .ssh 目录和文件权限错误

SSH 强制要求权限安全,否则直接拒绝。

✅ 正确权限如下:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa        # 私钥
chmod 644 ~/.ssh/id_rsa.pub    # 公钥

⚠️ 常见错误:

  • authorized_keys 权限是 644
  • .ssh 目录是 755
  • 文件属主不是当前用户

修复示例:

chown -R user:user /home/user/.ssh

二、SSH 配置禁止了密钥登录

2. /etc/ssh/sshd_config 配置问题

检查以下关键项:

grep -E 'PubkeyAuthentication|AuthorizedKeysFile|PasswordAuthentication' /etc/ssh/sshd_config

✅ 正确配置应至少包含:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

❌ 常见错误:

PubkeyAuthentication no

修改后 必须重启 sshd

systemctl restart sshd

三、SELinux 导致密钥失效(CentOS 特有)

3. SELinux 上下文错误(非常常见)

即使权限对,SELinux 不对也会失败。

检查 SELinux 状态

getenforce

如果是 Enforcing,执行:

restorecon -Rv /home/user/.ssh

或临时验证:

setenforce 0

如果关闭 SELinux 后能登录,说明就是它。


四、密钥格式不兼容(CentOS 8 / Rocky / Alma)

4. 旧客户端 + 新密钥格式

CentOS 8+ 默认使用:

ssh-keygen -t ed25519

但老客户端可能不支持。

✅ 建议兼容方案:

ssh-keygen -t rsa -b 4096

五、用户家目录权限问题

5. 家目录权限太开放

ls -ld /home/user

✅ 应该是:

drwx------ 

修复:

chmod 700 /home/user

六、sshd 未加载密钥文件

6. 自定义路径未生效

如果你改过:

AuthorizedKeysFile /etc/ssh/authorized_keys/%u

但文件不存在或权限不对,也会失败。


七、日志是最终真相(强烈建议)

7. 查看 SSH 登录失败原因

服务端

journalctl -u sshd -f

或:

tail -f /var/log/secure

客户端

ssh -vvv user@ip

常见错误提示:

  • Permission denied (publickey)
  • Authentication refused: bad ownership or modes
  • SELinux is preventing

八、快速自检清单(照着做)

# 1. 权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $USER:$USER ~/.ssh

# 2. SELinux
restorecon -Rv ~/.ssh

# 3. 配置
grep PubkeyAuthentication /etc/ssh/sshd_config

# 4. 重启
systemctl restart sshd

九、如果你愿意,我可以精准定位

你可以直接贴下面信息(可打码):

  1. ssh -vvv 输出
  2. /var/log/secure 报错
  3. CentOS 版本(cat /etc/os-release
  4. 是否改过 sshd_config

我可以 直接告诉你哪一行错了

0