突然无法 ssh 进入 CentOS 8 服务器,并出现错误“服务器拒绝我们的密钥”

突然无法 ssh 进入 CentOS 8 服务器,并出现错误“服务器拒绝我们的密钥”

我有一个 CentOS 8 服务器,设置了一些使用 SSH 密钥的用户,并且截至几天前,我在使用任何用户登录时都没有遇到任何问题。 (密码验证被禁用,root 登录也被禁用。)

我今天使用 PuTTY 和 WinSCP 登录并感到不寒而栗:

服务器拒绝我们的密钥

所有用户都会发生这种情况。sshd似乎很明显地发挥作用,因为它已经达到了拒绝钥匙的地步。当我挖掘日志时,我看到:

服务器提供了这些身份验证方法:publickey、gssapi-keyex、gssapi-with-mic

这表明sshd似乎运行正常。

我尝试使用Pageant中加载的密钥登录,也尝试绕过Pageant并直接在PuTTY和WinSCP中加载密钥,密钥仍然被拒绝。是的,这是正确的密钥,而且没有改变。

我碰巧运行了一个备份应用程序,因此我能够查看服务器上的文件可能发生了哪些更改。我可以确认这些.ssh/authorized_keys文件没有被修改。也没有sshd_config,我下载并查看了它。

我上次登录是几天前,我做了一个dnf update,但我不知道这会如何影响这一切。

有什么想法可能导致这种情况吗?

答案1

问题是/home权限。我暗自怀疑,但拒绝考虑这个想法,因为我不明白问题是如何发生的。当我回忆时,我隐约记得setfaclACL处理目录条目时输错了命令。我不小心做了一个,这搞乱了所需的setfacl -Rn [...] /home权限。sshd$home/.ssh/authorized_keys

这意味着所有用户都被锁定。PasswordAuthentication设置为 时,No无法进入服务器。那我是怎么解决的呢?感谢 Acronis 备份。我只是sshd_config从几个月前恢复到它PasswordAuthentication设置为Yes并添加reboot为后命令时。然后,在服务器重新启动后,我使用密码登录,并setfacl -b在正确的位置删除了 ACL,一切都恢复正常。

有点幸运,但我专门为几种灾难场景配置了备份,其中之一是需要很久以前的文件。

PS:友情建议,请立即仔细检查您的备份策略并投资可靠的解决方案。如果没有企业级备份,我可能会陷入数天的困境,试图将服务器的硬盘驱动器移动到新服务器并恢复我的 Web 应用程序,或者尝试启动到救援模式或其他一些乏味/不确定的方法。

相关内容