为什么 gitlab SSH 主机密钥指纹不匹配?

信息安全 SSH RSA ssh 主机密钥 github
2021-08-30 09:51:50

我试图通过 SSH 登录我大学的 gitlab。正如预期的那样,我被警告说主机未知。因此,我尝试在手册的“当前配置”页面上查找 SSH 主机密钥。但是,我发现密钥与 SSH 在第一次连接时显示的密钥不匹配。

为了证明这一点,您可以在此处找到 gitlab.com 的相应“instance_configuration”页面。据说 RSA-SHA256 指纹是

2fdd0c7dfa7d9381f847266c800eafc96f5866fe859c4f1cf87da885c82e333a

使用我在这个超级用户帖子中找到的脚本(或第一次通过 SSH 连接时)我被告知 SSH 主机的 RSA-SHA256 是

ROQFvPThGrW4RuWLoL9tq9I9zJ42fK4XywyRtbOz/EQ

这是

44e405bcf4e11ab5b846e58ba0bf6dabd23dcc9e367cae17cb0c91b5b3b3fc44

以十六进制表示(希望与您所看到的相匹配……或不匹配)。

我的问题:这些不应该相等吗?我错过了什么?如何验证 SSH 连接是否安全?

2个回答

发生这种情况的原因有很多:

  1. 托管位置。 Gitlab 可以在其他地方下载和托管。如果您的大学托管自己的 gitlab 版本,则发布在 gitlab 页面上的主机密钥没有任何意义。在那种情况下,你永远不会看到 gitlab 的主机密钥——你会看到你的大学服务器的主机密钥,差异将毫无意义。您将不得不询问大学他们的主机密钥是什么,并且您不太可能从他们那里得到答案。
  2. 过时的信息Gitlab 的主机密钥可能已更改,他们只是忘记相应地更新该帮助页面。
  3. MitM有人可能正在对您的计算机执行 MitM 攻击,并将流量从 gitlab 重定向到他们自己的恶意服务器。

我认为选项 #1 值得一提,因为您的大学的 gitlab 页面是由 gitlab 还是您的大学托管还不太清楚。听起来它是 gitlab 托管的,但不一定(显然 repo URL 应该清楚地说明这一点)。

中间人的可能性

在所有这三个选项中,#3 是最不可能的。在这种情况下,成功的中间人攻击可能既困难又几乎没有真正的好处(对攻击者而言),以至于在正常情况下我什至不会考虑它。因此,除非您尝试连接到远程 gitlab 存储库以便传输状态机密,否则您可能只是在处理选项 #1 或 #2。

您还可以通过检查您正在连接的服务器的 IP 地址并尝试确定它是否属于 gitlab 来尝试验证 MitM 的可能性。Gitlab 确实有一个(可能也是旧的)IP 地址列表:

https://gitlab.com/gitlab-com/infrastructure/issues/434

由于可能存在过期文档,因此即使对于有效的 gitlab 连接也不能保证匹配。也不能保证,因为运行成功的 MitM 的人可能(取决于细节)也可以欺骗 IP 地址。

最可能的情况

无论如何,MitM(IMO)不太可能,因此我会做你的事。如果有问题,您应该能够尽快发现。假设您将连接到 gitlab 服务器,找到您希望找到的文件,复制一些您自己的东西,然后将能够与您合作的任何人验证他们收到了您的工作副本。如果是这样,绝对没有什么可担心的。

一般来说,我的经验表明,很少有组织会为验证而发布主机密钥。主机密钥当然可用于验证您从未连接到的服务器,但实际上我认为这并不常见。我怀疑这主要是因为我在上面简要提到的原因:我不认为这是一个常见的攻击媒介,如果你连接到正确的服务器,你通常可以很容易地发现,因为几乎总是有更多的参与方来验证你的结果。因此,我最常使用主机密钥验证来检测服务器何时发生变化,而我很少(如果有的话)在第一次连接时使用它来验证服务器。

TL;DR - 我认为这根本不用担心,如果你仍然担心联系 GitLab,我怀疑任何人都能够在这里给你答案,因为我们不在那里工作。


就个人而言,我认为这里没有人会帮助你。我相信你在这里得到答案的最佳机会是联系 GitLab 的支持,这样你就会得到正确的答案。

至于连接是否安全,我认为你根本没有理由担心,根据 Semso 的评论,如果我们得到同样的东西,如果这有意义的话,这可能不是你的问题。

我不会太担心这一点,如果您仍然担心,请联系 GitLab,我相信他们会很乐意为您提供帮助。