我已经删除了文件夹 ~/.ssh/ 下完整的know_hosts和配置以及公钥和私钥。我还删除了 github 中的所有公钥。然后我生成了一个新的 ed25519 密钥对。 Wenn我将新生成的ed25519公钥添加到github,并尝试连接到github。
The authenticity of host can't be established.
ECDSA key fingerprint is SHA256:h41sMp7TPyRt9NnlOcuOt41O+rAgV1FsJzc/+Iy1yyY.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Host key verification failed
我注意到生成的密钥的 SHA256 指纹与 ECDSA 密钥指纹不一致。我假设 ECDSA 密钥指纹是我之前使用的。但是,完整的 ssh 文件夹仅包含 ed25519 密钥对。可能是什么问题呢?
答案1
这实际上不是一个问题因此:自从您删除了known_hosts
文件后,SSH 客户端以前连接到 Github 的记忆就消失了,现在它的行为就像您第一次连接到 Github 一样。因此它无法自动使用保存在 Github 中的主机密钥known_hosts
来验证所谓的“Github”是否与以前相同的服务器,而不是冒名顶替者。该指纹是远程主机的指纹SSH 主机密钥这不受您在本地所做的任何操作的影响。
现在,要验证您是否连接到真实的 Github 而不是假冒的 Github,您必须自己验证指纹并回答yes
问题,或者只是复制并粘贴从其他来源获得的指纹(例如GitHub.com 的这个网页)。
成功验证指纹后(或者您只需回答yes
选择信任它),实际远程主机的公钥将保存到您的known_hosts
文件中,并且在下一次连接时,验证将再次自动进行。
但是,我注意到您看到的指纹实际上不匹配 GitHub.com 的 SSH 公共主机密钥指纹。您要么连接到自己的私有 GitHub 实例,要么在您和真正的 GitHub.com 之间存在中间人。
使用 ed25519 密钥对的身份验证尚未开始:首先检查远程主机密钥以查看远程主机是否已知(如果已知,则用于验证远程主机的身份),并且仅在成功完成之后(或者用户已明确选择信任远程主机),SSH 将启动远程主机对您进行身份验证的过程。