发布id_rsa.pub以更轻松地设置新环境?


20

为了使在新机器和环境上更容易地设置无密码SSH,是否有任何原因导致id_rsa.pub文件(只是密钥对的公共部分)无法在网络上发布?例如在dotfiles GitHub存储库中。

我知道:

  • id_rsa文件(密钥对的私有部分)必须小心保护和
  • 密钥对应使用密码保护

但是我的搜索没有发现任何明确的建议,允许或鼓励这样做。

出于好奇,对于没有密码短语的密钥对,同样的建议会成立吗?


2
尽管在一般情况下(假定正确生成的密钥)可能是安全的,但过去存在缺陷(严重的Debian OpenSSH bug)严重限制了密钥空间,并使基于公共密钥的私钥可猜测。因此,始终存在这种风险-您怎么知道您的SSH密钥库没有类似的缺陷?
2014年

2
一种机制已经存在:ssh-import-id
MikeyB 2014年

这样就可以在机器之间共享id_rsa.pub?
Federico 2014年

Answers:


26

RSA是专门为允许您共享该公共密钥而设计的,因此,可以将其发布。这与带有RSA证书的x.509(和SSL)的工作原理非常相似。

在发布文件之前,请先查看它;唯一需要输入的内容是关键字“ ssh-rsa”和base64编码的密钥。您可能需要保持这种状态(我相信这是默认设置)。

无论密钥是否具有密码短语,都是如此。密码加密私钥,不影响公钥。

一如既往,确保您的密钥足够熵且足够大。如果它是由损坏的PRNG生成的,则可能是可预测的。但是,发布此密钥不会带来太多额外的风险,因为如果密钥空间很小,那么攻击者可以简单地尝试枚举密钥空间中的所有密钥,直到获得正确的密钥为止。

我建议使用4096位密钥(请指定-b 4096),这样某人将您的公共密钥转换为私有密钥会比平时更困难(默认值为2048)。这是这样做的唯一重大风险,并且它并不是很大,因为该算法是专门为使其不切实际而设计的。


33

已经是 :)只需在Github个人资料网址的末尾添加“ .keys”即可,如下所示:

https://github.com/tjmcewan.keys


Thant真的很有趣。GitHub公开了什么?
richardneish 2014年

方便。:)毕竟,这是公钥-必须共享。现在,获取新协作者的密钥并将其添加到您的服务器要容易得多。保存来回电子邮件。
tjmcewan 2014年

我没有意识到他们这样做。
Zeb 2014年

1
+1为Github上的有趣发现。
雷蒙德·陶

5

虽然通常我不建议您在公共项目存储库中放置您自己的特定配置(假设存储库适合所有人使用,而您的配置仅适合您本人,这有点不礼貌),但是对安全性的影响却很小。

唯一合理的攻击媒介是在某些恶意上下文中以某种方式使用该公共密钥来标识您。可能超出我的范围,但是公用密钥确实标识了专用密钥,尽管它没有提供有关其来源的任何提示。

有一个极端情况下的攻击向量可能不适用,但是如果您回想起Debian意外破坏openssl PRNG的惨败,那么在受影响的系统上生成的任何ssh密钥都可以轻松预测,并可以通过其公共密钥进行识别。因此,在那种情况下,发布公钥可能会给您带来麻烦。或更恰当地说,对任何东西使用该密钥都可能使您陷入麻烦。


向量1.指纹碰撞如何?它比公钥本身短得多;矢量2 mim攻击,例如“必须重新安装oops服务器,它具有不同的密钥,但无论如何请登录”,并为给定的用户公共密钥伪造成功的身份验证(如果可能,我不确定)

1

是的,您可以发布您的SSH公开密钥。您可以使用DNS中的SSHFP记录发布服务器的指纹!例如,如果您需要更新/更改服务器的SSH密钥,这可能确实很方便。

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.