Answers:
是的,不可能从公用密钥中恢复专用密钥。如果可能的话,RSA将会从根本上被打破,这将是一个重大新闻(破解RSA不仅会破坏很多Internet通信安全性,而且还可能导致各种银行欺诈行为,等等)。
实际上,使用公共密钥而不是密码登录往往会提高安全性。如果您的密码不够强,则攻击者可能会利用足够的带宽对其进行暴力破解。如果攻击者没有您的私钥文件的副本,则不能有效地强行使用RSA密钥(1024位密钥等效于由大小写敏感的字母和数字组成的160个字符的密码) 。监视您肩膀的人可能可以看到您的密码和密钥密码,但是使用密钥,他们还需要获取密钥。
私钥并不总是比密码更安全。如果攻击者获得了您的私钥文件的副本(例如,通过窃取您的笔记本电脑或备份媒体),则她可以尝试强行使用密码短语,并且可以高速进行,因为您无法限制密码的使用。费率(与需要在线进行的密码猜测不同)。如果您的密码短语足够好,并且您立即注意到盗窃行为,那么您仍然有时间撤销密钥。
公钥引入了隐私暴露的元素:如果某人知道您使用相同的公钥登录A和B,则他们知道同一个人登录了A和B。仅拥有公钥就可以使您怀疑您还拥有私钥,因此您会失去一些匿名感。但这通常是次要的,特别是如果您只是将密钥存储~/.ssh
在只有系统管理员(他们也知道您从哪个IP地址登录)可以看到它的地方。
除了这些安全性考虑之外,私钥具有许多实际优势。您不需要经常输入密码,尤其是可以运行自动脚本,一旦您在ssh-agent等中输入了密钥,该脚本便不会提示您。您不需要如此频繁地键入密码,因此您可以负担得起使其具有更高的熵(更长,更难键入)。您不需要如此频繁地键入密码,因此,被人类观察者或相机窥探的风险较小。
吉尔斯的答案总体上是好的,除了
...特别是如果您只是将密钥存储在〜/ .ssh中,则只有系统管理员(他们也知道您从哪个IP地址登录)才能看到它。
~/.ssh
您使用自己的帐户运行的任何软件也可以读取您的ssh键。这可能是您运行的大多数软件。因此,您必须信任该软件及其编写者。