“永久添加 RSA 主机密钥”是什么意思?

“永久添加 RSA 主机密钥”是什么意思?

我对 Unix 及其周围的事物非常陌生,特别是对于 SSH 和身份验证这个问题。

我知道我可以创建身份(创建一对公钥/私钥),将其放入 ssh-agent 并将公钥复制到远程主机,以便我可以 SSH 到远程主机而无需输入密码。如果我错了,请纠正我,但要列出本地系统中的所有注册身份,我可以运行ssh-add -l.

当我尝试通过 SSH 连接时(具体来说,我尝试通过 SSH 连接到 bitbucket,这样我就不必一遍又一遍地输入密码),我收到以下警告:

Warning: Permanently added the RSA host key for IP address 'xxx.xxx.xxx.xxx' to the list of known hosts.

在我屈服并继续执行所谓的“永久添加 RSA 主机密钥”后,我运行ssh-add -l并注意到我之前创建的一对公钥/私钥没有注册,而是似乎创建了一个新身份。我很困惑,检查了其中的内容,~/.ssh/但除了我之前创建的文件之外,没有看到任何其他公钥/私钥文件。

我尝试通过运行删除身份ssh-add -D,但无济于事:当我运行时它仍然显示ssh-add -l

我的问题是:

  • 到底是怎么回事?当我的 Unix 提示输入本地密码时,我是否刚刚创建了一个新身份?
  • 在哪里可以找到 列出的身份的公钥和私钥ssh-add -l?为什么我无法通过 删除身份ssh-add -D
  • 为什么我成功连接到 Bitbucket,而我没有在帐户管理器中添加公钥(除了我之前创建的公钥)ssh-keygen
  • 我注意到这可能与文件有关~/.ssh/known_hosts,但我不知道该文件的用途是什么,以及它与整个 SSH 业务有何关系?

我在互联网上查找了有关 SSH 如何工作、Unix 如何管理公钥/私钥和身份以及known_hosts 文件如何发挥作用的一些解释,但我找不到任何解释。任何对外部文章的解释或引用将不胜感激!

更多背景信息: 之前,我创建了一对新的公钥/私钥并将其添加到 ssh-agent(并将公钥复制到 Bitbucket,按照 Bitbucket 的指示)。然后我关掉电脑,第二天又打开。当我尝试执行此操作时git fetch,系统提示我输入本地用户密码,并出现上述警告。然后我的问题和困惑就消失了。

答案1

关键字有主机密钥。第一次连接到主机时,您会看到该主机公钥的指纹。服务器本身有一个密钥对,就像用户一样。

这个想法是,您可以使用您所知道的服务器指纹来验证指纹,以确保您不会被 MITMed。

一旦您接受主机密钥,它就会保存在您的known_hosts 文件中,您的客户端使用该文件来验证所有后续连接。

如果主机密钥意外更改,您的客户端会注意到并显示一条令人讨厌的错误消息,表明某些内容可能出现问题,您应该检查一下。

相关内容