ssh登录配置公钥后仍然需要密码登录的问题处理
如果你在authorized_keys
文件中添加了公钥,但仍然被要求输入密码,可能有几个原因:
-
权限问题: 确保
~/.ssh
目录的权限为700,authorized_keys
文件的权限为600。可以使用以下命令修复权限:bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
-
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 系统
-
公钥格式问题: 确保你在
authorized_keys
文件中添加的公钥是正确格式的。每个公钥应该是单行的,类似于:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD.....
如果你的公钥跨多行,确保每一行都正确且没有换行符。
-
用户 home 目录权限问题: 用户的主目录 (
~
) 以及~/.ssh
目录应该只对该用户可写。确保没有其他用户具有写权限。 -
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
好, 问题解决..
一顿排查,结果遇到个烂系统.