GitHub 改变了他们的安全协议,不再允许使用使用 SHA-1 加密算法的 RSA 密钥进行访问,而我目前使用 ssh 默认策略生成的就是这种类型的密钥,结果就是无法提交代码。
一种比较简便的方式是生成 ed25519 替换现有的,且两个密钥是不同的名称,可以共存。
为避免未来出现安全问题,了解一下 SSH 密钥究竟支持哪几种类型。
SSH 密钥类型
在 SSH 中,常见的密钥类型包括以下几种:
- RSA:这是最早的 SSH 密钥类型之一,使用 RSA 加密算法。RSA 密钥在 SSH 中被广泛使用,并且是许多 SSH 工具和协议的默认密钥类型。
- DSA:这是另一种早期的 SSH 密钥类型,使用 DSA 加密算法。DSA 密钥已被广泛使用,但现在已不建议使用。
- ECDSA:这是一种基于椭圆曲线加密算法的 SSH 密钥类型,通常比 RSA 和 DSA 密钥更安全和高效。
- ed25519:这是一种基于椭圆曲线加密算法的公钥加密方案,它被广泛应用于 SSH 密钥认证。ed25519 密钥具有更高的安全性和更好的性能,因此在许多情况下被认为是最佳选择。
- 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 密钥。