本文 首发于 🌱 煎茶转载 请注明 来源

GitHub 改变了他们的安全协议,不再允许使用使用 SHA-1 加密算法的 RSA 密钥进行访问,而我目前使用 ssh 默认策略生成的就是这种类型的密钥,结果就是无法提交代码。

一种比较简便的方式是生成 ed25519 替换现有的,且两个密钥是不同的名称,可以共存。

为避免未来出现安全问题,了解一下 SSH 密钥究竟支持哪几种类型。

SSH 密钥类型

在 SSH 中,常见的密钥类型包括以下几种:

  1. RSA:这是最早的 SSH 密钥类型之一,使用 RSA 加密算法。RSA 密钥在 SSH 中被广泛使用,并且是许多 SSH 工具和协议的默认密钥类型。
  2. DSA:这是另一种早期的 SSH 密钥类型,使用 DSA 加密算法。DSA 密钥已被广泛使用,但现在已不建议使用。
  3. ECDSA:这是一种基于椭圆曲线加密算法的 SSH 密钥类型,通常比 RSA 和 DSA 密钥更安全和高效。
  4. ed25519:这是一种基于椭圆曲线加密算法的公钥加密方案,它被广泛应用于 SSH 密钥认证。ed25519 密钥具有更高的安全性和更好的性能,因此在许多情况下被认为是最佳选择。
  5. ECIES:这是一种基于椭圆曲线加密算法的加密方案,可以在 SSH 中使用。ECIES 密钥通常用于加密和解密敏感数据。

在选择使用哪种类型的 SSH 密钥时,需要考虑安全性、性能和应用需求等多种因素。其中 ed25519 密钥被认为是目前最安全和最高效的 SSH 密钥类型之一。

生成方法

当您需要在 SSH 中使用某种类型的密钥时,可以使用命令行工具来生成密钥对。以下是各种类型的 SSH 密钥的生成命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

该命令将生成一个长度为 4096 位的 RSA 密钥,并要求您输入密钥文件名和密码。该命令还将提示您将公钥文件复制到远程主机上。

生成 DSA 密钥:

ssh-keygen -t dsa -b 1024 -C "your_email@example.com"

该命令将生成一个长度为 1024 位的 DSA 密钥,并要求您输入密钥文件名和密码。该命令还将提示您将公钥文件复制到远程主机上。

生成 ECDSA 密钥:

ssh-keygen -t ecdsa -b 521 -C "your_email@example.com"

该命令将生成一个长度为 521 位的 ECDSA 密钥,并要求您输入密钥文件名和密码。该命令还将提示您将公钥文件复制到远程主机上。

生成 ed25519 密钥:

ssh-keygen -t ed25519 -C "your_email@example.com"

该命令将生成一个 ed25519 密钥,并要求您输入密钥文件名和密码。该命令还将提示您将公钥文件复制到远程主机上。

生成 SSH 密钥对后,您可以将公钥文件复制到远程主机上,以便使用私钥进行 SSH 认证。您还可以将公钥文件添加到您的 GitHub 或其他 Git 托管服务的账户设置中,以便进行代码推送和拉取操作。

需要注意的是,不同的 SSH 工具和平台可能会支持不同的密钥格式和类型。在使用 SSH 密钥时,需要确保您的 SSH 工具支持您使用的密钥类型。

总结

综上,建议使用 ed25519 密钥。