SSH配置公钥后仍需要输入密码问题解析
最近在设置ssh 的时候遇到了一个问题,就是我明明在远程主机上设置好了公钥,但是每次登录的时候还是需要我输入密码,于是开始尝试排查问题。首先我想到了日志,如果是秘钥配对异常的话应该是会报日志错误的吧。于是我尝试使用系统日志检查sshd:journalctl --unit=sshd使用快捷键G(vim 中直接定位到文件末尾的快捷键)定位到日志最后面,获取到了我最近一次登录的日志信息。经过仔细检查发现
最近在设置ssh 的时候遇到了一个问题,就是我明明在远程主机上设置好了公钥,但是每次登录的时候还是需要我输入密码,于是开始尝试排查问题。
首先我想到了日志,如果是秘钥配对异常的话应该是会报日志错误的吧。于是我尝试使用系统日志检查sshd
:
journalctl --unit=sshd
使用快捷键G(vim 中直接定位到文件末尾的快捷键)定位到日志最后面,获取到了我最近一次登录的日志信息。经过仔细检查发现了一行报错日志:
这里的报错日志还是很能说明问题的:
Authentication refused: bad ownership or modes for file /home/admin/.ssh/authorized_
将这行报错日志复制到网上一搜,果然后大神早已经给出报错原因和解决方案。原来这里是我的文件权限设置异常,由于 authorized_keys
这个文件我自己创建的,而 ssh 处于安全性考虑,对.ssh
目录下的文件权限内容有着严格的权限要求,如下:
简单描述来说就是文件authorized_keys
除了属主拥有读写(-rw
)权限以外属组
和其他
用户是没有任何权限的,我的问题就是出在了这里。
之前我的用户目录文件夹可能是由于做了什么配置使得属组
拥有了读的权限,从而导致连带的.ssh
和authorized_keys
文件在创建时继承了用户文件夹的权限,也都拥有了属组
的读取权限。这对于 ssh
来说是不允许的,因此ssh
在比对秘钥的时候无法打开authorized_keys
从而导致秘钥配对失败。而ssh
此时没有放弃连接,尝试询问用户密码。最终产生了用户配置了公钥却仍然需要输入密码的问题。
知道问题原因后处理起来也比较简单了,只需修改相对应的目录权限即可:
cd .ssh
chmod 700 ../
chmod 700 .
chmod 600 authorized_keys
参考资料
SSH无密钥配置和配置公钥
SSH Authentication Refused: Bad Ownership or Modes for Directory
更多推荐
所有评论(0)