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

Leo*_*sov 61 ssh

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

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

所以...我应该放弃整个系统而只使用一个 SSH 密钥来处理所有事情吗?

[更新 2015-08-05] Github 发布您的公钥,并且您的 SSH 客户端可能会将您的所有公钥发送到每个服务器,具体取决于配置,因此,如果您担心 3rd 方 SSH 服务器在连接时知道您的身份,您应该使用多个 SSH 密钥,尽管在我看来这是偏执的。

hea*_*vyd 40

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

考虑这些因素应该可以帮助您确定是否真的需要单独的密钥。在我的本地网络上的个人计算机上,我通常不会在尝试管理多个密钥时为额外的开销而烦恼。然而,在我的网络之外,我会使用不同的密钥,每个密钥都有一个独特的密码。但这只是我个人的意见。

  • +1 用于“评估威胁模型”。这就是重点。 (8认同)

Spi*_*iff 33

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

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

pbe*_*hez 21

不,使用多个键不是浪费时间。

更多的多样性 == 更少的风险。

斯皮夫的那句话是不正确的。

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

这里需要关注的风险是身份验证。流氓站点将身份验证请求转发给您的代理任务。如果您只使用一个密钥,那么即使您的代理中只加载一个密钥所有站点都对流氓开放

与 passphrases 无关,您可以拥有多个具有相同密码短语的密钥,这在这里没有任何区别。因为被泄露的不是密码。

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

我说对你好,你选择了别人的隐私而不是你自己的懒惰。

PS 这个故事的寓意是小心代理转发

  • 假设我生成三个 SSH 密钥,我定期登录的三台服务器各一个。有一天,在我已经登录所有三个密钥后(这意味着 ssh-agent 已缓存所有三个密钥的密码),然后根据您的说法,如果我的 ssh-agent 被泄露,那么所有三个登录都会被泄露。在这种情况下,拥有多个 SSH 密钥并不能保护我。我对你的理解正确吗? (2认同)

kro*_*old 9

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


YaO*_*OzI 6

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

当我们创建一个 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):
Run Code Online (Sandbox Code Playgroud)

虽然有一个明确的提示要求密码,但一些(或许多)人仍然更关注括号中的信息:(空表示没有密码),并遵循该建议。

结合是否使用多个 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)
Run Code Online (Sandbox Code Playgroud)

没有 passwd,如果我们的系统被某人入侵,那么断路器可以获得我们所有的私钥和配置,以及远程服务器的身份验证。所以在这种情况下,One key-pair 和 Multi key-pairs 是一样的。最安全的方法是对不同的 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)
Run Code Online (Sandbox Code Playgroud)

所以,在一般情况下,如果我们必须同时兼顾安全性便利性,我们可以将这两个分数相乘,也许One SSH key-pair (WITH passwd)是一个不错的选择。