我有一个系统,其中 SSH-ing 仍然要求输入密码,即使:
- 我的公钥
authorized_keys
在远程服务器上的文件中正确。 - 我的私钥存储
id_rsa
在我的.ssh
目录中。 - 本地客户端和远程服务器上的权限是正确的。这包括主目录、
.ssh
目录、authorized_keys
文件和密钥文件本身。 - SELinux 在客户端和服务器上都被禁用。
此外,/var/log/secure
服务器在每次登录尝试时都会报告以下错误:
sshd[17110]: error: Could not get shadow information for <USER>
我用字符串替换了实际的用户名<USER>
。
这可能是什么原因和/或如何让我的 SSH 密钥正常工作?
问题是客户端系统上的公钥/私钥不匹配。我通过运行解决了这个问题:
这将生成与现有私钥对应的公钥并将其写入
id_rsa.pub
文件,从而再次匹配公钥/私钥。我在我找到的几个 Stack Exchange 答案中找不到我的问题的答案,所以决定在这里问/回答我自己的问题。这怎么发生的?发生的事情是我过去有 SSH 密钥工作,但在某个时候意外
ssh-keygen
再次运行。这创建了一对新的公钥/私钥。我意识到了这一点,并试图通过放回我的旧私钥来修复它。由于服务器在文件中仍然有旧的公钥authorized_keys
,因此不需要更改任何内容。不幸的是,我没有更改导致当前情况的客户端的公钥。