ssh登录配置公钥后仍然需要密码登录的问题处理

邱秋 • 2023年11月28日 • 阅读:510 • ssh linux

如果你在authorized_keys文件中添加了公钥,但仍然被要求输入密码,可能有几个原因:

  1. 权限问题: 确保~/.ssh 目录的权限为700,authorized_keys 文件的权限为600。可以使用以下命令修复权限:

    bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

  2. sshd 配置问题: 确保sshd 配置文件中的以下项启用:

    PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys

    在大多数系统上,sshd 配置文件通常位于 /etc/ssh/sshd_config。修改配置后,重启SSH服务:

    bash sudo service sshd restart # 对于 systemd 系统

    或者

    bash sudo systemctl restart sshd # 对于 systemd 系统

  3. 公钥格式问题: 确保你在 authorized_keys 文件中添加的公钥是正确格式的。每个公钥应该是单行的,类似于:

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD.....

    如果你的公钥跨多行,确保每一行都正确且没有换行符。

  4. 用户 home 目录权限问题: 用户的主目录 (~) 以及 ~/.ssh 目录应该只对该用户可写。确保没有其他用户具有写权限。

  5. SELinux 或 AppArmor 问题: 在某些系统上,SELinux 或 AppArmor 可能会阻止 SSH 使用 authorized_keys 文件。你可以尝试禁用它们(不建议在生产环境中禁用安全模块,而是应该配置正确的规则):

    • 对于 SELinux:

      bash sudo setenforce 0

      如果这解决了问题,你可能需要调整 SELinux 上下文。

    • 对于 AppArmor:

      bash sudo aa-complain /etc/apparmor.d/usr.sbin.sshd

      如果这解决了问题,你可能需要调整 AppArmor 配置文件。

请记住,在进行任何系统更改之前,建议备份重要文件,并确保你知道如何撤销或恢复这些更改。

排查方式可以 借助日志:

tail -f /var/log/messages

tail -f /var/log/secure

如果依然有问题. 那就去你大爷的 :

sudo yum update -y

好, 问题解决..

一顿排查,结果遇到个烂系统.

我,秦始皇,打钱!

相关文章

禅境花园小程序

关注前沿技术开发.