将SSH键升级到ED25519

2021-06-22 15:52:34

如果您是DevOps工程师或Web开发人员,您已经有很大的机会,您已经熟悉并每天使用SSH密钥身份验证。无论是用于登录远程服务器,还是将提交推向远程存储库时。它为我们提供了比传统的基于密码的身份验证更好的安全性。

但是,您最后一次创建或升级SSH密钥是什么时候?您是否使用了最新推荐的公钥算法?如果它超过五年前并且您使用默认选项生成了SSH密钥,您可能最终使用RSA算法,密钥大小长于2048位。

要检查计算机上的所有可用SSH键,请在终端上运行以下命令:

🚨dsa:它不安全且甚至不再支持openssh版本7,您需要升级它!

⚠️rsa:它取决于键尺寸。如果它有3072或4096位长度,那么你很好。少于那个,你可能想升级它。 1024位长度甚至被认为是不安全的。

👀ECDSA:它取决于您的机器如何生成随机数,可以用于创建签名。对ECDSA使用的NIST曲线也有一种可靠的担忧。

ED25519在OpenSSH 6.5版上引入。它是使用扭曲的Edwards曲线的EDDSA实现。它使用椭圆曲线密码术,与DSA或ECDSA相比,提供更好的性能。

今天,RSA是SSH键最广泛使用的公钥算法。但与ED25519相比,如果使用小于2048位长度的键生成,它会慢且甚至被认为是不安全的。

ED25519公钥紧凑。与具有544个字符的RSA 3072相比,它只包含68个字符。生成密钥也几乎与签名过程一样快。使用ED25519执行批量签名验证也很快。它建成是碰撞弹性。哈希函数碰撞不会破坏系统。

您可以在计算机上有多个SSH键。因此,您可以保留旧的SSH键并生成使用ED25519的新建。这样,您仍然可以登录任何远程服务器。然后将逐个逐个逐个替换在远程服务器上的授权密钥,其中包含新生成的ED25519公钥。

打开终端并键入以下命令以生成使用ED25519算法的新SSH密钥:

将要求您输入此键的密码短语,使用强大的密钥。您也可以使用与任何旧的SSH键类似的相同密码。

-O:使用新的OpenSSH格式而不是PEM格式保存私钥。实际上,当您将键类型指定为ED25519时,暗示此选项。

-a:这是KDF(关键推导函数)轮的数量。如果私钥被盗,较高的密码验证的数量会导致较慢的密码验证,增加对蛮力密码开裂的阻力。

-f:指定生成的密钥文件的文件名。如果您希望被SSH代理自动发现它,它必须存储在主目录中的默认设置“。

-c:指定注释的选项。它纯粹是信息性的,可以是任何东西。但它通常填充<登录> @< hostname>谁生成了关键。

您可以在〜/ .ssh / id_ed25519和公钥处找到新生成的私钥.pub.pub。始终记住,您的公钥是您复制到目标主机以进行身份​​验证的关键字。

在向SSH代理添加新的私钥之前,请确保通过执行以下命令运行SSH代理:

然后运行以下命令以将新生成的ED25519密钥添加到SSH代理:

或者如果要在默认的.ssh目录下添加所有可用键,只需运行:

如果您使用的是MacOS Sierra 10.12.2或更高版本,则会自动加载键并将密码存储在钥匙串中,您需要配置〜/ .ssh / config文件:

host * addkeystoagent是使用eymerchain是identityfile〜/ .ssh / id_ed25519 Identityfile〜/ .ssh / id_rsa#如果您愿意,请保留任何旧密钥文件 SSH协议已允许客户端提供多个键,服务器将选择它需要身份验证的键。 但是,我们还可以指定特定的私钥以使用: 或者您甚至可以将条目添加到〜/ .ssh / config文件以配置以下选项: 一旦它保存,稍后您可以像这样SSH这样的目标主机: