发放我的SSH公钥上班是否安全?


60

我目前在许多组织中进行远程工作,这些组织需要我定期访问其服务器以进行维护和升级。对我来说,将RSA公用SSH密钥添加到.ssh/authorized_keys文件中是否安全,从而使我可以更快地登录/无需查找密码?我假设不可能从公共密钥生成私钥,但我的假设对吗?

更进一步,将我的RSA公钥内容发布到Internet上是否会存在任何安全风险?我知道,如果获得了我的私钥,我会遇到很多麻烦,但是除此之外,还存在真正的安全威胁吗?


Answers:


77

是的,不可能从公用密钥中恢复专用密钥。如果可能的话,RSA将会从根本上被打破,这将是一个重大新闻(破解RSA不仅会破坏很多Internet通信安全性,而且还可能导致各种银行欺诈行为,等等)。

实际上,使用公共密钥而不是密码登录往往会提高安全性。如果您的密码不够强,则攻击者可能会利用足够的带宽对其进行暴力破解。如果攻击者没有您的私钥文件的副本,则不能有效地强行使用RSA密钥(1024位密钥等效于由大小写敏感的字母和数字组成的160个字符的密码) 。监视您肩膀的人可能可以看到您的密码和密钥密码,但是使用密钥,他们还需要获取密钥。

私钥并不总是比密码更安全。如果攻击者获得了您的私钥文件的副本(例如,通过窃取您的笔记本电脑或备份媒体),则她可以尝试强行使用密码短语,并且可以高速进行,因为您无法限制密码的使用。费率(与需要在线进行的密码猜测不同)。如果您的密码短语足够好,并且您立即注意到盗窃行为,那么您仍然有时间撤销密钥。

公钥引入了隐私暴露的元素:如果某人知道您使用相同的公钥登录A和B,则他们知道同一个人登录了A和B。仅拥有公钥就可以使您怀疑您还拥有私钥,因此您会失去一些匿名感。但这通常是次要的,特别是如果您只是将密钥存储~/.ssh在只有系统管理员(他们也知道您从哪个IP地址登录)可以看到它的地方。

除了这些安全性考虑之外,私钥具有许多实际优势。您不需要经常输入密码,尤其是可以运行自动脚本,一旦您在ssh-agent等中输入了密钥,该脚本便不会提示您。您不需要如此频繁地键入密码,因此您可以负担得起使其具有更高的熵(更长,更难键入)。您不需要如此频繁地键入密码,因此,被人类观察者或相机窥探的风险较小。


@NaftuliTzviKay实际上,这里应该考虑一些被忽略的东西。为了使用您的公共密钥,您要从中进行部署的系统必须有权访问您的私有密钥。没关系。如果该私钥存储在该系统上,则它很容易受到攻击,并且远程系统也容易受到攻击。这有两点帮助,加密的主文件夹和密钥上的密码。因此,要完全提高PKI提供的安全性,您将失去一些效率。您或您的组织需要进行风险分析,以确定划界的位置。
Xalorous

16

吉尔斯的答案总体上是好的,除了

...特别是如果您只是将密钥存储在〜/ .ssh中,则只有系统管理员(他们也知道您从哪个IP地址登录)才能看到它。

~/.ssh您使用自己的帐户运行的任何软件也可以读取您的ssh键。这可能是您运行的大多数软件。因此,您必须信任该软件及其编写者。


2
因此,您应始终使用加密的SSH密钥
ItalyPaleAle
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.