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


21

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

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

现在基于我已阅读的文档,我将在B和C上运行ssh-keygen并将公钥放置在计算机A上,假设如果我在B或C上我将始终通过SSH进入计算机A。

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

这有意义吗?有任何缺陷或注意事项要考虑吗?

谢谢。

Answers:


29

从理论上讲,您可以同时使用两种方法,但是它们各有优缺点:

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

另一方面,每台用户@计算机使用一个键的优势在于,与“什么”可以连接“何处”相比,它具有更多的“精细控制”。这是最常见的方法。

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

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


您无法使用客户端的私钥来解密ssh流,并且根据服务器设置,您也无法使用服务器的私钥来对其进行解密。 zurlinux.com/?p=1772
Dan Merillat 2015年

是的,这不是我的意思。我的意思是,如果您的私钥被盗,则可以使用它从其他任何地方连接到计算机A。通过在authorized_keys行的开头添加FROM =“ <IP>”可以缓解这种情况。(请参见ssh手册页)
mveroone

复制后,我必须插入密码才能在另一台计算机上使用它,我认为这至少是一些安全性:)
OZZIE

3

绝对可以在三台计算机上使用相同的键-我一直在这样做,主要是为了方便起见。

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

  • 所有计算机都将您的公钥保存在authorized_keys文件中。
  • 您保留2个私钥副本;一个位于您脖子上的USB记忆棒中(用于在使用ssh访问另一台计算机时使用),另一个位于USB记忆棒中某个地方的保险箱中(以防丢失第一份副本)。

如果您的一台计算机被盗或以其他方式破坏了您的公钥-那么这仅仅是一个公钥,那又如何。

如果您的私钥被盗或丢失,您将立即着手生成一个新的密钥对并更新所有计算机上的公钥。

HTH。


2
好的,但是什么是HTH?
mikeserv 2015年

3
HTH =希望有所帮助。
ALAN WARD

1
需要指出的是,如果将私钥放入闪存驱动器,将其设置为受密码保护的私钥将是明智的。使用代理(Windows上的pagent,Linux上的ssh-agent)可以减轻每次输入密码短语的
不便之
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.