我们的服务器是阿里云的 ECS,在创建实例的时候选择的是通过密钥对来进行登录的,但是最近出现用私钥无法登录的情况。因为当时手头上的事情比较紧急,所以先是在阿里云控制台修改了登录密码,然后就使用密码进行登录,但是用密码登录安全性还是不如 SSH Key 的。

于是等手头的事情忙完了以后,我便开始尝试在阿里云的控制台重新为服务器绑定密钥对,结果依然无法登录。于是我就自己在本地生成公私钥,然后将公钥通过 ssh-copy-id 命令拷贝到服务器上了。

并且将服务器上的 etc/ssh/sshd_config 文件中的 PasswordAuthentication 修改为 no

本以为这样就可以连接上了,但是当我尝试登录的时候却出现了如下提示:

$ ssh -i ~/.ssh/id_rsa root@xxx.xxx.xxx.xxx
root@xxx.xxx.xxx.xxx: Permission denied (publickey, gssapi-keyex,gssapi-with-mic).

经过多翻尝试,换了各种类型的 Key 依旧无果,然后在网上看到了一片帖子,说可能是用户的家目录被加密了,导致 SSH Key 验证失败。

抱着死马当活马医的心态,将 /root/.ssh/authorized_keys 文件拷贝到了 /etc/ssh/authorized_keys,然后修改 /etc/ssh/sshd_configAuthorizedKeysFile 项,将其指向到 /etc/ssh/authorized_keys

然后使用如下命令重启 SSHD 服务:

$ sudo systemctl restart sshd

再次尝试连接服务器,终于成功连接上了服务器。

I hope this is helpful, Happy hacking…