到目前为止,我已经为我需要登录的每台服务器创建了单独的 SSH 密钥(更准确地说,是针对每个目的)。我这样做是出于安全感,就像不同的网站使用不同的密码一样。
拥有多个 SSH 密钥真的能提高安全性吗?它们都在同一台机器上使用,位于同一个 ~/.ssh 中,大多数甚至具有相同的密码。
那么...我应该放弃整个系统并只使用一个 SSH 密钥来处理所有事情吗?
[更新日期 2015-08-05]Github 发布你的公钥,你的 SSH 客户端可能会根据配置将所有公钥发送到每个服务器因此,如果你担心第三方 SSH 服务器在连接时知道你的身份,你可以应该使用多个 SSH 密钥,尽管在我看来这是偏执的。
答案1
SSH 密钥使用公钥加密。这意味着你在所有这些服务器上安装的只是你的民众密钥,想全世界都知道。唯一真正的秘密是你在自己的机器上锁定的私钥。所以是的,我想说你在浪费时间。
答案2
最终这取决于你。你需要评估你的威胁模型。你的一个密钥被泄露的可能性有多大?如果一个密钥被泄露,其他密钥被泄露的可能性有多大?你的密钥被泄露的后果是什么?管理多个密钥的成本(包括时间)是多少?
考虑这些因素应该可以帮助您决定是否真的需要单独的密钥。在我的本地网络上的个人机器上,我通常不会费心管理多个密钥。但是,在我的网络之外,我会使用不同的密钥,每个密钥都有一个唯一的密码。但这只是我的个人观点。
答案3
不,使用多个密钥并不浪费时间。
多样性越大=风险越小。
斯皮夫的这个说法是不正确的。
关键是公钥授予对私钥持有人,没有其他人。
这里需要关注的风险是身份验证。恶意网站会将身份验证请求转发给您的代理任务。如果您只使用一个密钥,那么即使仅加载一个密钥在你的代理中,所有网站均开放对流氓。
这有与密码无关,您可以拥有多个具有相同密码的密钥,但这不会造成任何影响。因为被泄露的不是密码。
恶意程序将挑战转发给你的代理,并可以连接到所有网站您已加载密钥。 使用不同的钥匙,一键加载 -> 一个站点面临风险。
我说你真棒,你选择了尊重别人的隐私而不是自己的懒惰。
PS这个故事的寓意是警惕代理转发
答案4
我认为合理的可以从两个不同的角度来考虑:安全和方便。
当我们创建 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 密钥对和是否输入附加密码,我们至少有四种方法。我们假设所有密钥对和文件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)
无密码,如果我们的系统被人入侵,那么入侵者就可以获得我们所有的私钥和配置,以及远程服务器的身份验证。所以在这种情况下,单密钥对和多密钥对是一样的。最安全的方式是为不同的 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 密钥对 (带密码)是一个不错的选择。