前言
本文相当于对之前的文章进行的补充【原创】三台CentOS7非root用户间实现相互间的免密登录_DCTANT的博客-CSDN博客
现场遇到一台旧服务器与其他服务器免密失败的问题,明明.ssh目录中authorized_keys中的公钥设置都是正确的,但是别的服务器连它都得输密码,我本以为2分钟就能解决了,没想到搞了半小时才解决。
问题排查
1、authorized_keys文件权限
首先排查authorized_keys这个文件的权限,一般来说这个文件的仅有当前用户有编辑权限,其他用户都没有编辑权限,即644,或者600都可以。
如果authorized_keys包含了其他用户的编辑权限,则会导致免密失效。
目前来看这个文件的权限是正确的
2、查看authorized_keys中的内容是否正确
之前我遇到过好几次了,由于编辑authorized_keys内容的时候用的vi编辑器,然后直接就粘贴了,根本没有先切换为插入模式再粘贴,导致第一个s作为切换功能的命令被吞了,少了第一个字母,导致免密失败。
还有就是少复制了另外几台服务器的id_rsa.pub的内容,或者是本机的id_rsa.pub的内容。
然后这次也没这个问题。
3、查看authorized_keys文件名是否正确
有些人喜欢手敲命令,然后authorized_keys这个文件不是漏最后一个s,就是中间漏字母,也导致免密失败。目前来看我这边也没这个问题
4、查看免密自己
免密先要保证本服务器对于自己的免密,即直接执行:
cp id_rsa.pub authorized_keys
这样生成的authorized_keys不仅能完成对自己免密,就连权限都是对的
然后我执行了对自己的ssh远程连接,结果发现对自己ssh连接都需要输入密码,那肯定不是免密做错了!
当时就有一种眼前一黑的感觉,心想问题严重了,突破我的认知了
5、查看日志
日志路径为/var/log/secure,需要用root用户查看,执行
tail -f -n200 /var/log/secure
日志显示 Authentication refused: bad ownership or modes for directory /home/dct
问题解决
这就很奇怪了,我这个dct用户肯定是有/home/dct这个目录权限的,怎么可能会有这个问题,然后我直接问ChatGPT了,它回答到
“Authentication refused: bad ownership or modes for directory /home/dct"错误通常表示目录”/home/dct"的所有权或权限设置不正确,导致SSH服务器在认证时拒绝访问。
要解决这个问题,您可以按照以下步骤进行操作:
检查目录的所有权:确保目录"/home/dct"的所有权配置正确。对于SSH用户来说,这个目录应该归属于正确的用户,一般对应于具有相应权限的用户帐户。您可以使用以下命令来更改目录的所有权:
sudo chown -R <用户>:<用户组> /home/dct
将<用户>和<用户组>替换为正确的用户和用户组。
检查目录的权限设置:确保目录"/home/dct"的权限设置正确。对于SSH用户来说,该目录的权限应被设置为700,这将确保只有所有者可以对其进行读取、写入和执行操作。您可以使用以下命令来设置目录的权限:
sudo chmod 700 /home/dct
这将设置"/home/dct"目录的权限为700。
确保按照以上步骤检查并更正目录"/home/dct"的所有权和权限设置。如果问题仍然存在,您可能需要进一步检查SSH服务器的配置文件和日志,以便确定是否有其他配置问题或错误。
用户权限肯定是对的,但是用户目录的权限有问题!!
不知道是哪个线上操作的“人才”,把用户的家目录的权限改成了这样,导致了免密失败!!
执行
sudo chmod 700 /home/dct
即可解决这个问题!真是活久见了,这个用户文件夹权限也会导致免密失败,我也是第一次遇到!!