拥有多个SSH密钥是否合理?


44

到目前为止,我已经为需要登录的每个服务器创建了一个单独的SSH密钥(出于各种目的,更准确地说)。我这样做是出于安全感,就像给不同站点使用不同的密码一样。

拥有多个SSH密钥是否真的可以提高安全性?它们都在同一台机器上使用,位于相同的〜/ .ssh中,大多数甚至具有相同的密码。

所以...我应该放弃整个系统,而仅对所有内容使用一个SSH密钥吗?

[UPDATE 2015-08-05] Github会发布您的公共密钥,并且您的SSH客户端可能会将您的所有公共密钥发送到每个服务器,具体取决于配置,因此,如果您担心连接时知道自己身份的第三方SSH服务器,您应该使用多个SSH密钥,尽管我认为这很偏执。


这个问题可能更适合于信息安全
Gerrit

Answers:


25

SSH密钥使用公共密钥加密。这意味着,你在所有这些服务器上安装什么只是你的公共密钥,您想要全世界知道。唯一的真实秘密是您的私钥,您一直将其锁定在自己的计算机上。是的,我要说你是在浪费时间。


19
我认为拥有单独的密钥是有正当理由的,这不会浪费时间。在密钥泄露的情况下,降低了这种风险。我同意每个密钥的密码应该不同。
jfmessier 2010年

在不同的机器上具有不同的密钥对是否合理?像VirtualBox OS的不同实例一样?
Santosh Kumar

1
该答案忽略了深度防御的概念,因为它依赖于“您一直锁定在自己的计算机上的私钥”。例如,考虑如果ssh-agent使用您的私钥(其中之一)时笔记本电脑被盗了会发生什么。如果您有多个密钥,那么任何仍加密的密钥都是安全的。我不会浪费时间。
乔恩·本特利

33

最终,这取决于您。您需要评估威胁模型。您的钥匙之一被泄露的可能性有多大?如果一个密钥被泄露,那么其他密钥被泄露的可能性有多大?密钥被泄露有什么后果?管理多个密钥的成本(包括时间)是多少?

考虑这些因素将有助于您确定是否确实需要单独的密钥。在本地网络上的个人计算机上,在管理多个密钥时,我通常不会为额外的开销而烦恼。但是,在网络之外,我将使用不同的密钥,每个密钥都有一个唯一的密码短语。但这只是我个人的看法。


6
+1用于“评估威胁模型”。这只是重点。
sleske 2010年

21

不,使用多个密钥不会浪费时间。

更多多样性==降低风险。

Spiff的陈述是不正确的。

关键是公钥授予私钥持有者的访问权,而没有其他人。

此处要担心的风险是身份验证。流氓站点将身份验证请求转发到您的代理任务。如果仅使用一个密钥,则即使在代理中仅加载一个密钥所有站点仍对恶意服务器开放

与密码短语无关,您可以拥有多个具有相同密码短语的密钥,在这里没有什么区别。因为不是密码短语被破坏。

流氓将挑战转发给您的代理,并可以连接到为其加载了密钥的所有站点 使用不同的密钥,一个密钥已加载->一个站点处于风险中

我说对您有好处,您是根据自己的惰性选择了其他人的隐私。

PS故事的寓意是警惕代理转发


假设我生成了三个SSH密钥,对于我定期登录的三台服务器,每一个都生成一个。有一天,在我已经登录所有三个密钥后(这意味着ssh-agent已缓存所有三个密钥的口令),然后根据您的说法,如果我的ssh-agent被破坏了,则所有三个登录都被破坏了。在这种情况下,拥有多个SSH密钥并不能保护我。我对你的理解正确吗?
sampablokuper 2011年

9

我认为多个公钥是一个很好的用例,那就是如果您在不同信任区域的计算机上存储了私钥。因此,我通常保留一个密钥作为我的“工作”密钥,而保留另一个密钥作为我的“家庭”密钥,这仅仅是因为“家庭”内容的私钥没有存储在工作计算机上,反之亦然。


很好的答案,如果您的其他机器使用不同的按键,那就太完美了。如果一台(或多台)机器都具有相同的密钥,那么,拥有一个密钥就无法保护自己免受任何额外的损害。如果一个人被攻破,那台机器上的其余所有东西也都将受到损害。
xref

3

我认为可以从两个不同的角度来考虑合理安全性便利性

当我们创建SSH密钥对时,要求我们提供密码以添加更多层来保护私钥,如下所示:

$ ssh-keygen -t rsa -b 4096 -C 'With_OR_Without_Passwd'
Generating public/private rsa key pair.
Enter file in which to save the key (/Your/HomeDir/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

尽管有一个明确的提示要求输入密码,但是一些(或许多)人仍然更加关注方括号中的信息:(空无密码),并遵循该建议。

结合是否使用多个SSH密钥对以及是否输入其他passwd,我们至少有四种方法。并假设所有密钥对和config文件都存储在中~/.ssh/

现在,让我们先不考虑安全性

下表给出了有关安全性的简单排名(数字越大表示安全性越高):

Security     Ways to go
   1         One   SSH key-pair  (NO passwd)
   1         Multi SSH key-pairs (NO passwd)
   2         One   SSH key-pair  (WITH passwd)
   2         Multi SSH key-pairs (WITH passwd) (SAME passwd)
   3         Multi SSH key-pairs (WITH passwd) (DIFF passwds)

没有passwd,如果我们的系统被某人入侵,那么断路器可以获取我们的所有私钥和配置,以及远程服务器的身份验证。因此,在这种情况下,一个密钥对和多个密钥对是相同的。最安全的方法是对不同的ssh密钥对使用不同的密码。

那我们就不考虑方便了

但是更多的密钥对和更多的密码也使我们的生活变得不那么方便,下表给出了有关安全性的简单排名(数字越大意味着越安全):

Convenient  Security  Ways to go
   5           1      One   SSH key-pair  (NO passwd)
   4           2      One   SSH key-pair  (WITH passwd)
   3           1      Multi SSH key-pairs (NO passwd)
   2           2      Multi SSH key-pairs (WITH passwd) (SAME passwd)
   1           3      Multi SSH key-pairs (WITH passwd) (DIFF passwds)

因此,在一般情况下,如果我们必须同时权衡安全性便利性,我们可以将两个分数相乘,也许一个SSH密钥对(与passwd一起)是一个不错的选择。

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.