关于 Github 的 ECDSA 主机密钥与 IP 地址密钥不同的重复警告

关于 Github 的 ECDSA 主机密钥与 IP 地址密钥不同的重复警告

我在 Github 中使用 Git 时不断收到此消息:

警告:'github.com' 的 ECDSA 主机密钥与 IP 地址 '20.248.137.48' 的密钥不同 /home/steve/.ssh/known_hosts:133 中 IP 的密钥不正确 /home/steve/.ssh/known_hosts:140 中主机密钥匹配 您确定要继续连接(是/否)吗?

我知道Github 的 SSH 主机密钥已更改并已更新我的~/.ssh/known_hosts以包含新密钥,并三次检查该文件中没有其他条目。

当我更新它时,消息会消失一段时间(可能几个小时),然后不可避免地会再次出现。

这特别痛苦,因为如果我尝试从 VS Code 内部与 Github 交互(例如,推送分支),窗口就会挂起,大概是在等待我在一个看不见的终端里输入“是”。

我在 Windows 10 上的 WSL 2 上运行 Ubuntu 20.04.3。

答案1

当 GitHub 循环使用密钥时,它可能会落在任意数量的潜在 IP 地址上。这是因为 GitHub 使用整个主机和服务器阵列来存储其内容。没有办法正确过滤全部其中,所以您可能需要考虑将类似这样的内容添加到您的~/.ssh/config文件中:

Host github.com:
    StrictHostKeyChecking no

这尚未测试,但理论上应该在使用 GitHub 时禁用主机密钥检查。

答案2

我今天在做一件事的时候遇到了这个问题git clone

Warning: the ECDSA host key for 'github.com' differs from the key for the IP address '140.82.114.3'
Offending key for IP in /home/<user>/.ssh/known_hosts:Y
Matching host key in /home/<user>/.ssh/known_hosts:X
Are you sure you want to continue connecting (yes/no)?

(其中 X 和 Y 是行号)

我很困惑,因为我最近确实从这台计算机推送到了 GitHub(即在他们的 RSA 主机密钥改变之后)。

我检查了:

ssh-keygen -l -f ~/.ssh/known_hosts -F github.com

结果是:

# Host github.com found: line X
github.com ECDSA SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM

基于GitHub 发布的密钥指纹,看上去是对的。

然后我从错误信息中检查了IP地址:

ssh-keygen -l -f ~/.ssh/known_hosts -F 140.82.114.3

这给出了:

# Host 140.82.114.3 found: line Y
140.82.114.3 RSA SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8

这里使用 RSA 密钥,并且没有与上面页面的匹配。所以这肯定是 GitHub 的旧 RSA 密钥。

我使用以下方法删除了它:

ssh-keygen -f ~/.ssh/known_hosts -R 140.82.114.3

之后git clone没有任何提示就成功完成了,所以它一定只是使用了附加的 ECDSA 密钥github.com

我猜测原因是我删除了旧的 RSA 密钥github.com,但由于某种原因,它也存储在每个 IP 地址下,因此当该服务器再次轮换出现时,它会抱怨。

我不知道有没有一种简单的方法可以自动获取所有 GitHub IP,但鉴于错误基本上说“该 IP 的密钥错误,但它与主机名匹配”,我只需删除 IP 条目就可以了。

相关内容