我目前在许多组织进行远程工作,这些组织需要我定期访问他们的服务器进行维护和升级。将 RSA 公共 SSH 密钥添加到.ssh/authorized_keys
文件中以允许我更快地登录/无需查找密码是否安全?我的假设是不可能从公钥生成私钥,但我的假设正确吗?
更进一步,将我的 RSA 公钥内容发布到互联网上是否会存在任何安全风险?我知道如果我的私钥被获取,我会遇到很多麻烦,但除此之外,是否存在任何真正可能的安全威胁?
答案1
是的,从公钥中恢复私钥是不可能的。如果可能的话,RSA将从根本上被破解,这将是一个重大新闻(破解RSA不仅会破坏很多互联网通信安全,而且还会允许各种银行欺诈等)。
事实上,使用公钥而不是密码登录往往会提高安全性。如果您的密码强度不够,则拥有足够带宽的攻击者可能会对其进行暴力破解。如果攻击者没有您的私钥文件的副本,则实际上无法暴力破解 RSA 密钥(1024 位密钥相当于由随机区分大小写的字母和数字组成的 160 个字符的密码) 。监视您的人可能会看到您的密码和密钥密码,但如果有密钥,他们还需要获取密钥。
私钥并不总是比密码更安全。如果攻击者获取了您的私钥文件的副本(例如通过窃取您的笔记本电脑或备份介质),她可以尝试暴力破解密码,并且她可以高速执行此操作,因为您无法限制率(与需要在线进行的密码猜测不同)。如果您的密码足够好并且您立即注意到盗窃,您仍然有时间撤销密钥。
公钥引入了隐私暴露的因素:如果有人知道您使用相同的公钥登录 A 和 B,那么他们就知道登录 A 和 B 的是同一个人。仅仅拥有公钥就意味着您怀疑您也拥有私钥,因此您失去了一些匿名性。但这通常是次要的,特别是如果您只是将密钥存储在~/.ssh
只有系统管理员(他们也知道您登录的 IP 地址)可以看到的地方。
除了这些安全考虑之外,私钥还有许多实际优势。您不需要经常输入密码,特别是可以运行自动化脚本,一旦您在 ssh-agent 等中输入密钥,这些脚本就不会提示您。您不需要经常输入密码,因此您可以将其设置为更高的熵(更长,更难输入)。您不需要经常输入密码,因此密码被观察者或摄像机窥探的风险较小。
答案2
吉尔斯的回答总体来说都不错,除了
...特别是如果您只是将密钥存储在 ~/.ssh 中,只有系统管理员(也知道您登录的 IP 地址)才能看到它。
您输入的 ssh 密钥~/.ssh
也可以被您自己帐户下运行的任何软件读取。这可能是最多您运行的软件的。因此,您必须信任该软件以及编写该软件的人。