如何验证远程 GitHub 服务器 ssh 指纹的变化?

如何验证远程 GitHub 服务器 ssh 指纹的变化?

当我尝试从我们工作的 GitHub 服务器克隆项目时,我看到了这个错误。今天早些时候这没有问题,但今天下午它突然开始出现。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:<fingerprint>.
Please contact your system administrator.
Add correct host key in /Users/<myname>/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/<myname>/.ssh/known_hosts:1
ECDSA host key for github.companysite.com has changed and you have requested strict checking.

我甚至尝试生成一个新的密钥对,但这并没有解决问题。问题是,我无法知道我们的 github 实例的服务器是否发生了变化,这是一个合法的新指纹还是一次攻击。我确实可以访问我们公司的 github 网页版。有没有办法让我通过网页检查服务器的指纹,并在将其复制到受信任的主机文件之前将其与我收到的指纹进行比较?

编辑澄清:这是我公司的私人 github 实例,而不是公共 github。

答案1

我甚至尝试生成一个新的密钥对,但这并没有解决问题。

该消息不是在谈论你的密钥对。而是在谈论服务器的密钥对。(服务器密钥对的改变实际上就是原因该消息,它不可能解决这个问题。

有没有什么方法可以让我通过网页检查服务器的指纹,并在将其复制到受信任的主机文件之前与我收到的指纹进行比较?

我找不到任何文档表明 GitHub Enterprise 有这样的网页。不过我找到了官方文档这表明没有在2016年(2.3.x–2.7.x)有这样的网页,根据这句话:

“我们强烈建议将您的 GitHub Enterprise 设备的 SSH 主机密钥指纹发布到所有最终用户都可以访问的位置。”这意味着创建这样的网页完全是系统管理员的责任。

由于 GitHub.com 仍然没有集成的 SSH 指纹列表(只有“帮助”部分中的一篇手动更新的文章),所以我也不指望 GitHub Enterprise 在这方面有所改进。

因此,如果您的系统管理员尚未创建这样的网页,也未宣布主机密钥更改,那么您就没有太多选择了:

  • 您可以尝试通过多种不同的路径并比较指纹来排除基于网络的 MITM 攻击(以防只有一条路径上有 MITM)——例如,假设服务器可在全球范围内访问,首先直接连接,然后通过商业 VPN 提供商连接,然后通过公司的内部 VPN(如果有)连接,然后比较结果。如果它们全部相同,则可能是合法的指纹。

  • 您可以忽略更改并继续连接。如果您在公司自己的 LAN 内进行连接,则 MITM 攻击的可能性并不高。(当您连接到网站时,它是否具有有效的 TLS 证书?或者它在 SSH 主机密钥更改的同时是否停止有效?或者它从一开始就没有有效的证书?这可以作为 MITM 攻击与系统管理员无能的指标。)

  • Please contact your system administrator.

相关内容