为什么要为不同的主机(如 GitHub)使用专用的 SSH 密钥?

信息安全 SSH 密钥管理 混帐
2021-08-19 00:29:52

我最近发现了github-keygen,这是一个可以帮助您设置 SSH 以与 GitHub 一起使用的工具。该工具所做的一件事是创建一个专用于 GitHub 交换的新 SSH 私钥;该手册声称“这比使用相同的 SSH 密钥连接到多个主机要好得多”。我不明白为什么应该为 GitHub 使用专用密钥会更好。该手册证明了这种做法的合理性如下:

(如果您丢失了 [sic] 该密钥,只需在您的 GitHub 帐户 SSH 设置中撤销它,删除密钥文件,然后重新运行github-keygen)。

但是如果你丢失了一个非专用的 SSH 密钥,你肯定会做同样的事情——你会从 GitHub 上的授权密钥列表中删除它(以及从authorized_keys你使用的所有其他远程机器的文件中),然后生成一个新的。为不同的远程主机(如 GitHub)使用专用 SSH 密钥会给您带来什么?

2个回答

为什么要为不同的主机(如 GitHub)使用专用的 SSH 密钥?

答:撤销。

当您丢失 SSH 密钥时,您必须撤销它有权访问的所有内容。如果您在 GitHub 上使用与通过 SSH 连接到您的个人 Web 主机相同的密钥,则必须从这两个地方删除该密钥。每个服务一个密钥意味着您的其他密钥都不会受到丢失的影响。

GitHub 的建议可能过度说明了风险。在多个系统上使用相同的 ssh 密钥与在多个系统上使用相同密码所带来的风险完全不同。但是,还有一些其他因素需要考虑,这些因素可能会导致某人拥有多个 ssh 密钥。

拥有多个 ssh 密钥的最明显原因与您的身份概念有关。虽然我们大多数人认为我们只有一个身份,但现实情况是我们可能至少有两个——个人/私人身份和工作身份。对于我们大多数人来说,我们的个人身份永远不会改变,但我们的工作/专业身份可能会在职业生涯中多次改变。因此,将这两个身份分开通常是有意义的。在某些组织中,您甚至会获得一个“工作”ssh 密钥,当您离开组织时,该密钥会被撤销。如果您将该密钥用于个人目的,您可能会发现您失去了对某些资源的访问权限,或者必须通过审查程序才能重新获得访问权限等。

拥有多个 ssh 密钥的另一个原因是限制 ssh 密钥的值。这类似于拥有两个独立的钥匙圈——一个挂在大厅的挂钩上,另一个放在地板下的保险箱里。第一个包含低风险、经常使用的资源的关键。第二,高风险或很少需要的资源。如果你的房子被抢劫了,他们可能会得到第一个,而不是第二个,从而最大限度地减少损失。

最后一项与密钥管理有关,根据我的经验,这是我看到的关于 ssh 密钥的最常见的弱点/失败,也是我认为我们没有看到更广泛部署 ssh 密钥的原因之一。我经常遇到人们使用 ssh 密钥的情况,但密钥管理实践各不相同。现实情况是,使用具有不良密钥管理实践的 ssh 密钥通常不如仅依靠密码安全。许多用户不了解保护他们的私钥有多重要,并且会犯错误,例如将它们检查到版本控制系统中,将它们存储在不安全的备份中,将它们复制到各种云存储系统等。我发现人们经常使用ssh 密钥没有密码,因为它更方便。这是一个不同的坏主意。如果你想要方便,

正是由于这个密钥管理问题,我不建议为每个站点使用不同的密钥。除了不提高安全性之外,它还增加了密钥管理的负担——您必须管理的密钥越多,发生错误的可能性就越大。大多数人可能需要多个密钥,但需要超过 5 个的情况并不常见,在大多数情况下,2 个或可能 3 个就足够了。