SSH 不使用公钥/私钥

SSH 不使用公钥/私钥

我有一个系统,SSH-ing 仍然要求输入密码,即使:

  1. 我的公钥正确地存在于authorized_keys远程服务器上的文件中。
  2. 我的私钥存储id_rsa在我的.ssh目录中。
  3. 本地客户端和远程服务器的权限正确。这包括主目录、.ssh目录、authorized_keys文件和密钥文件本身。
  4. SELinux 在客户端和服务器上均被禁用。

此外,/var/log/secure服务器在每次登录尝试时都会报告以下错误:

sshd[17110]: error: Could not get shadow information for <USER>

我用字符串替换了实际的用户名<USER>

造成这种情况的原因是什么和/或如何让我的 SSH 密钥正常工作?

答案1

问题是公钥/私钥不匹配在客户端系统上。我通过运行解决了这个问题:

$ cd ~/.ssh
$ ssh-keygen -y -f id_rsa > id_rsa.pub

这将生成与现有私钥对应的公钥并将其写入文件id_rsa.pub,从而再次匹配公钥/私钥。

我在我找到的几个 Stack Exchange 答案中找不到问题的答案,因此决定在这里提出/回答我自己的问题。这怎么发生的?发生的情况是,我过去有 SSH 密钥,但在某个时候不小心ssh-keygen又运行了。这创建了一对新的公钥/私钥。我意识到了这一点,并尝试通过放回我的旧私钥来修复它。由于服务器的文件中仍然保留着旧的公钥authorized_keys,因此无需进行任何更改。不幸的是,我没有更改客户端的公钥导致了目前的情况。

相关内容