本地管理多个rsa密钥

由于使用了不同的Github账号创建了不同的Hexo网站,因此也相应的创建了不同的rsa密钥文件,虽然文件名上做了区分,但是在Hexo发布时,仍旧默认沿用原有的ras文件来进行密钥验证,由此造成验证失败无法发布的问题。

针对这个问题,解决方案是在ssh目录下创建config配置文件进行多个rsa文件的管理,具体方法如下:

1. rsa文件准备

使用git-bash创建rsa文件时,命令窗口中会提示要求用户输入路径和文件名:

1
Enter file in which to save the key (/c/Users/<用户名>/.ssh/id_rsa):

括号当中是默认的路径和文件名,如果此时直接回车会覆盖原有同名文件(命令窗口中会询问是否覆盖)。因此这个时候可以输入新的文件名(包括路径也要输入,否则文件会生成在git目录下),这样就可以生成不同的rsa文件。

如果生成的时候没有设置名称,在文件生成之后直接修改文件名也是可以的,注意两个文件都要改。

2. 创建config文件

c:/Users/<用户名>/.ssh/目录下创建config文件,配置此文件内容来管理多个rsa文件,参考如下内容:

1
2
3
4
5
6
7
8
9
10
11
#excelcode
Host github-excelcode
HostName github.com
User excelcode
IdentityFile ~/.ssh/excelcode_rsa

#hzchrisfang
Host github-hzchrisfang
HostName github.com
User hzchrisfang
IdentityFile ~/.ssh/hzchrisfang_rsa

说明:

  • Host: 此配置的名称,repo当中需要用到这个Host名称
  • HostName: 目标网站的域名
  • User: 用户名或者邮箱
  • IdentityFile: rsa文件路径和名称

3. 修改Hexo配置

在Hexo网站的本地目录当中找到_config.yml文件,打开后找到以下代码:

1
2
3
4
deploy:
type: git
repo: git@github.com:<username>/<username>.github.io.git
branch: master

其中repo当中的github.com就相当于config配置文件中的Host,因此将之前配置当中的Host名称替换这部分内容,就可以让当前Hexo网站按照配置文件当中的设定目标去访问相应的rsa文件了。

例如设置为如下内容:

1
2
3
4
deploy:
type: git
repo: git@github-hzchrisfang:hzchrisfang/hzchrisfang.github.io.git
branch: master

根据之前config文件中的设定,此网站发布时会访问的rsa文件就是hzchrisfang_rsa。这样就可以区分对待,顺利通过密钥验证了。