多台计算机的 SSH 密钥身份验证

多台计算机的 SSH 密钥身份验证

我正在阅读有关 SSH 密钥身份验证的内容,并在家里的 3 台计算机上进行设置。

我有一台主计算机,称为“A”,另外两台计算机,称为“B”和“C”。

现在,根据我读过的文档,我将在 B 和 C 上运行 ssh-keygen 并将公钥放在计算机 A 上,假设我始终通过 SSH 连接到计算机 A(如果我在 B 或 C 上)。

但是,我认为我读过的文档示例假设只有一台家用计算机与其他外部计算机一起使用。在我的情况下,仅在一台计算机上运行 ssh-keygen 并将文件复制到其他计算机上是否有意义?这样我只需要备份一组密钥?当我登录外部计算机时,我只需使用一组密钥进行设置,而不是使用所有三台计算机进行设置。

这有道理吗?有任何需要考虑的缺陷或警告吗?

谢谢。

答案1

理论上,两种方法都可以,但它们各有优缺点:

您确实只能创建一把密钥,说它是“您的”(作为一个人),将其保护在某个地方并将其复制到您使用的任何计算机上。优点是只要你拥有 SSH 私钥,你就可以从任何地方连接到 A。缺点是,只要您将私钥从一个地方复制到另一个地方,无论以何种方式,都会增加被窃听连接的人读取私钥的风险。更糟糕的是,如果计算机 C 被盗,您必须在所有使用该密钥的计算机上重新生成一个新密钥,并分发一个新密钥。

另一方面,每个用户@计算机使用一个密钥具有对“什么”可以连接“哪里”进行更多“精细控制”的优点。这是最常见的做法。

例如,如果您要将计算机 C 交给您的兄弟/姐妹/妻子/丈夫/朋友/狗,或交给小偷(未经您的批准),您只需从 A 的“authorized_keys”中删除密钥即可文件。

因此,即使这意味着“authorized_keys 中有更多密钥”,我建议采用第二种方法。

答案2

在所有三台计算机上使用相同的密钥绝对是可行的 - 我一直这样做,主要是为了方便。

Kwaio 正确地指出,这会增加您的密钥被盗的风险。一种可能的解决方案是将私钥和公钥部分分开。所以:

  • 所有计算机的authorized_keys 文件中都有您的公钥。
  • 您保留 2 份私钥副本;一个在你脖子上的 U 盘中(在使用 ssh 访问另一台计算机时使用),另一个也在某个安全地方的 U 盘中(以防万一你丢失了第一个副本)。

如果您的一台计算机被盗或者您的公钥被泄露 - 好吧,它只是一个公钥,那又怎样。

如果您的私钥被盗或丢失,您应立即开始生成新的密钥对并更新所有计算机上的公钥。

HTH。

相关内容