![“永久添加 RSA 主机密钥”是什么意思?](https://linux22.com/image/47938/%E2%80%9C%E6%B0%B8%E4%B9%85%E6%B7%BB%E5%8A%A0%20RSA%20%E4%B8%BB%E6%9C%BA%E5%AF%86%E9%92%A5%E2%80%9D%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%EF%BC%9F.png)
我对 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 文件中,您的客户端使用该文件来验证所有后续连接。
如果主机密钥意外更改,您的客户端会注意到并显示一条令人讨厌的错误消息,表明某些内容可能出现问题,您应该检查一下。