为了使在新机器和环境上更容易地设置无密码SSH,是否有任何原因导致id_rsa.pub
文件(只是密钥对的公共部分)无法在网络上发布?例如在dotfiles GitHub存储库中。
我知道:
- 该
id_rsa
文件(密钥对的私有部分)必须小心保护和 - 密钥对应使用密码保护
但是我的搜索没有发现任何明确的建议,允许或鼓励这样做。
出于好奇,对于没有密码短语的密钥对,同样的建议会成立吗?
为了使在新机器和环境上更容易地设置无密码SSH,是否有任何原因导致id_rsa.pub
文件(只是密钥对的公共部分)无法在网络上发布?例如在dotfiles GitHub存储库中。
我知道:
id_rsa
文件(密钥对的私有部分)必须小心保护和但是我的搜索没有发现任何明确的建议,允许或鼓励这样做。
出于好奇,对于没有密码短语的密钥对,同样的建议会成立吗?
Answers:
RSA是专门为允许您共享该公共密钥而设计的,因此,可以将其发布。这与带有RSA证书的x.509(和SSL)的工作原理非常相似。
在发布文件之前,请先查看它;唯一需要输入的内容是关键字“ ssh-rsa”和base64编码的密钥。您可能需要保持这种状态(我相信这是默认设置)。
无论密钥是否具有密码短语,都是如此。密码加密私钥,不影响公钥。
一如既往,确保您的密钥足够熵且足够大。如果它是由损坏的PRNG生成的,则可能是可预测的。但是,发布此密钥不会带来太多额外的风险,因为如果密钥空间很小,那么攻击者可以简单地尝试枚举密钥空间中的所有密钥,直到获得正确的密钥为止。
我建议使用4096位密钥(请指定-b 4096
),这样某人将您的公共密钥转换为私有密钥会比平时更困难(默认值为2048)。这是这样做的唯一重大风险,并且它并不是很大,因为该算法是专门为使其不切实际而设计的。
已经是 :)只需在Github个人资料网址的末尾添加“ .keys”即可,如下所示:
虽然通常我不建议您在公共项目存储库中放置您自己的特定配置(假设存储库适合所有人使用,而您的配置仅适合您本人,这有点不礼貌),但是对安全性的影响却很小。
唯一合理的攻击媒介是在某些恶意上下文中以某种方式使用该公共密钥来标识您。可能超出我的范围,但是公用密钥确实标识了专用密钥,尽管它没有提供有关其来源的任何提示。
有一个极端情况下的攻击向量可能不适用,但是如果您回想起Debian意外破坏openssl PRNG的惨败,那么在受影响的系统上生成的任何ssh密钥都可以轻松预测,并可以通过其公共密钥进行识别。因此,在那种情况下,发布公钥可能会给您带来麻烦。或更恰当地说,对任何东西使用该密钥都可能使您陷入麻烦。