先把当时的情况摆出来。公钥已经推到服务器上,权限也改成了六百,登录却仍然要求输入密码,日志里提示找不到授权文件。

原因不止一个,得分开看。服务端配置里指定了非默认的公钥文件路径。还有一种是用户的家目录权限不对,读取被拒绝。

另外,公钥被写到了错误的用户目录下。

上来先看服务端日志的具体原因

journalctl -u sshd -n 30 | grep -i 'authorized'

然后确认配置里的路径

grep -n AuthorizedKeysFile /etc/ssh/sshd_config

随后核对目录权限和属主

ls -ld ~/.ssh && ls -l ~/.ssh/authorized_keys

修正后重启服务验证

systemctl restart sshd

那几天正好在做别的变更,先把时间线对齐才敢动手。

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

怎么算真的好了,看的是同一批现象。使用密钥直接登录成功,服务端日志不再出现找不到授权文件的提示。

家目录权限过宽也会被拒绝,安全模块要求非常严格;改完务必另开一个会话验证再断开当前连接。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189