出于安全和便捷考虑,一直都使用公钥认证的方式登录服务器。今天登录服务器的时候,公钥认证的方式突然不work,需要输入密码才能登录。为了回到方便的公钥认证方式,只要解决这个问题。

  1. 查看自身目录下的.ssh文件,确认 id_ras 和 id_rsa.pub 都存在:

    ll ~/.ssh

    执行这个命令,文件都存在并且权限正确,PASS!

  2. 登录服务器查看公钥在服务器的授权keys里面:

    ll ~/.ssh/ && cat ~/.ssh/authorized_keys

    发现文件权限正常,并且授权key的内容正确,PASS!

  3. 开启ssh的debug信息,查找原因:

    ssh server -v

    查看输入的日志,发现公钥发送后,服务器并没有接受,认证方式于是跳转到了密码认证。本来寄希望于这个命令找点线索,现在觉得其实也没有什么卵用!

  4. 登陆服务器,查看审计信息:

    su -
    less /var/log/secure

    仔细查看信息,终于找到了原因: Authentication refused: bad ownership or modes for directory /home/tlanyan。抓住这个线索,查看一下家目录的配置:

    ls /home/tlanyan

    噢,原来是不小心把属主弄错了。将目录的属主切换为自身:

    chown tlanyan /home/tlanyan

    退出,再次登陆,发现一切OK~