我应该为我工作的每台机器生成新的 SSH 私钥吗?

信息安全 SSH 密钥管理
2021-08-17 21:26:38

我希望这是一个合适的地方来问这个问题。我最近一直在考虑公钥和私钥,我想知道与管理我自己的个人私钥相关的最佳实践是什么。具体来说,如果我经常使用三台不同的计算机(个人台式机、工作台式机、笔记本电脑)以及其他偶尔使用的计算机,那么使用私钥的最佳方式是什么?

目前,我在我正在使用的每台计算机上生成一个新的密钥对,然后根据需要将它们添加到 authorized_keys 中。这是最好的方法,还是我应该使用一个密钥对并将其复制到我使用的所有计算机上?我想问题是,我的密钥对应该用于识别“我”,还是用于识别“我在 X 计算机上”?

4个回答

这个问题有点令人困惑。据我了解,您是在询问有关PubKeyAuthentication从您的三台机器中的任何一台通过设置为 的 SSH 登录到服务器的问题。

您应该为每台机器生成一对密钥。这样,如果一个私钥被泄露,您不必在您登录的所有三台机器上重新生成密钥对。实际上,您想将自己(对服务器)标识为“您在计算机 X 上”。

如果您使用的是 PGP,那么您应该使用唯一的密钥对来将自己(对其他 PGP 用户)标识为“您”。

每个密钥对代表一个身份有时在您使用的每台机器上使用不同的身份会很有用,但有时在设备之间共享身份会很有用。

当每个设备都有单独的密钥时,然后:

  • 您的通信伙伴需要拥有所有设备的公钥,并且需要验证是您本人(您可以通过使用所有其他设备的密钥对所有设备的密钥进行签名来提供后者)。当您购买新设备时,这变得非常麻烦。
  • 您的通信伙伴知道您从哪个设备发送消息,这会降低您的隐私。

当您仅将密钥用于私人目的时,例如用于登录您自己的服务器,则为每个设备拥有一个单独的密钥具有以下优势:如果一个密钥被泄露,您只需撤销该密钥而不必更换您拥有的每台设备上的密钥。但是这样做的成本是更高的管理开销:要添加新设备,您需要使用旧设备登录以添加新的公钥。使用共享密钥,您只需将密钥复制到新设备即可。

这是最好的方法,还是我应该使用一个密钥对并将其复制到我使用的所有计算机上?

正如@dr01 强调的风险,您应该在每台计算机上使用一个密钥。

我的密钥对应该用于识别“我”,还是用于识别“我在 X 计算机上”?

任何基于密码或密钥的身份验证系统仅识别秘密或密钥的知识,而不是用户。

使用密码进行身份验证的问题在于它不能证明登录的人就是您。它所证明的只是他们知道您的密码(http://www.pcmag.com/article2/0,2817,2428440,00.asp)。

因此,密钥永远不会识别您,它只会识别用户(计算机 X 上的您或计算机 Y 上的任何人)是否拥有密钥。

还要考虑使用硬件设备的想法。YubiKey NEO 可以存储 GPG 密钥,gpg-agent 可以使用它来向任何服务器验证它,就像普通的 ~/identity 文件一样。

有一个使用 gpgkey2ssh 和 gpg-agent来设置它的教程。