更新SSH key格式为ed25519


官网最新的SSH Key格式和生成方式是ed25519,其比之前创建博客时使用的rsa速度更快,也更加安全。

SSH很熟悉,之前Hexo博客部署时,使用SSH连接的方式,可以避免每次hexo d时都要输入用户名和密码,SSH连接比较方便。

官网是如此说的,使用SSH协议,您可以连接到远程服务器和服务并对其进行身份验证。使用SSH密钥,您可以连接到GitHub,而无需在每次访问时提供您的用户名和个人访问令牌。您还可以使用SSH密钥对提交进行签名。

1. SSH常见key格式

1.1. 各种格式密钥的特点

之前使用的Key格式是RSA,密钥文件名是id_rsa.pub。常见的格式还有DSAECDSA等,特点如下。

  • DSA 它是不安全的,OpenSSL从v7版本开始已放弃对其支持,如果你正在使用,请马上升级。
  • RSA 安全性依赖于key的大小,3072位或4096位的key是安全的,小于此大小的key可能需要升级一下,1024位的key已经被认为不安全。
  • ECDSA 安全性取决于你的计算机生成随机数的能力,该随机数将用于创建签名,ECDSA使用的NIST曲线也存在可信赖性问题。
  • ed25519 是目前最推荐的公钥算法。

1.2. ed25519的优势

RSA是目前使用最广泛的SSH key格式,但同ed25519相比,RSA速度更慢,且当key小于2048位时是不安全的。

ed25519公钥更为紧凑,仅68个字符。生成密钥和签名的过程都非常快,使用ed25519进行批量签名验证也很快。它是为防碰撞而设计的,防哈希冲突。

2. 检查现有 SSH 密钥

在生成新的SSH密钥之前,应该检查本地计算机是否存在现有密钥。

输入ls -al ~/.ssh以查看是否存在现有的SSH密钥,这个命令的含义就是列出.ssh目录中的文件(如果存在)。

ls -al ~/.ssh

默认情况下,GitHub的一个支持的公钥的文件名是以下之一。
id_rsa.pub
id_ecdsa.pub
id_ed25519.pub

提示:如果收到错误,指示~/.ssh不存在,则表明默认位置中没有现有的SSH密钥对。 您可以在下一步中创建新的SSH密钥对。

如果有现有的SSH密钥,则可以使用该密钥通过SSH对Git操作进行身份验证。没有则生成一个新的。如果不希望使用任何可用的密钥对,当然也可以生成新的SSH密钥。

3. 生成新的 SSH 密钥

3.1. 使用以下命令生成密钥

ssh-keygen -t ed25519 -C "你的GitHub注册邮箱"

这个命令含义就是以填写的的电子邮件地址为标签创建新SSH密钥。-t 表示创建的key的类型,最新我们使用ed25519,之前创建博客时采用的命令是ssh-keygen -t rsa -C "你的GitHub注册邮箱",生成的密钥格式便是rsa的。

3.2. 选择保存位置

接下来提示您Enter a file in which to save the key(输入要保存密钥的文件)”时,按Enter键。这会接受默认文件位置。

> Enter a file in which to save the key (/Users/you/.ssh/id_algorithm): [Press enter]

3.3. 之后在提示符下,键入安全密码。

Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

4. 将SSH密钥添加到ssh-agent

4.1. 在后台启动 ssh 代理。

eval "$(ssh-agent -s)"

4.2. 新建或修改~/.ssh/config文件

如果你使用的是macOS Sierra 10.12.2或更高版本,则需要修改 ~/.ssh/config文件以自动将密钥加载到ssh-agent中并在密钥链中存储密码。

4.2.1. 首先,检查你的~/.ssh/config文件是否在默认位置。

open ~/.ssh/config

4.2.2. 如果文件不存在,请创建该文件。

touch ~/.ssh/config

4.2.3. 修改config文件

打开你的~/.ssh/config文件,然后将下面的代码添加到文件中。 如果您的SSH密钥文件与示例代码具有不同的名称或路径,请修改文件名或路径以匹配您当前的设置。

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

4.3. 将SSH密钥添加到ssh-agent

将SSH私钥添加到ssh-agent并将密码存储在密钥链中。 如果使用其他名称创建了密钥或要添加具有其他名称的现有密钥,请将命令中的d_ed25519替换为私钥文件的名称。

ssh-add -K ~/.ssh/id_ed25519

5. 将SSH密钥添加到GitHub上的帐户

生成SSH密钥对后,您必须将公钥添加到GitHub.com才能为您的帐户启用 SSH 访问。这部分内容见之前的博客搭建文章6.3部分内容

6. 测试SSH连接有效性

这部分内容见之前的之前的博客搭建文章6.4部分内容

7. 致谢

GitHub官方SSH身份验证说明文档


文章作者: Pamarus
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Pamarus !
评论
  目录