配置ssh密钥
在之前的博文《使用Hexo搭建博客》介绍了使用ssh方式登录github
,但是那是初步部署博客时写的,随着使用,我需要将工作的办公的博客分开,同时办公的博客更新频率较低,所以这就需要在一台电脑上使用不同的ssh密钥,来管理不同的github
或gitee
帐户,本文记录这个具体配置过程。
- 生成SSH Key ,如果没有配置过,则系统内没有 ~/.ssh 文件夹,此时需要先建立一下。即
1 | $ mkdir ~/.ssh |
此时我之前已经设置了一次密钥,于是可以等到如下显示
1 | id_rsa id_rsa.pub known_hosts |
- 再生成一对密钥,因为第一对密钥只能管理一个帐户。即
1 | $ ssh-keygen -t rsa -C "emailname@email.com" |
此时不要一直按Enter键, 要重新输入路径和密钥名字,即第二行。此时
~/.ssh/
内将会保存两组公钥和两组私钥。
- 配置密钥,这步操作的理由是对每组密钥取一个名字,以方便在git调用密钥时知道调用的是哪一个,如果不配置则一直调用默认的一个。
1 | $ vim ~/.ssh/config |
此config
文件便是区分各密钥的配置,其内容如下
1 | # github one |
这里作一下解释,我们生成的文件id_rsa
和
id_rsa_two
相当于两把钥匙,我们使用哪一把钥匙进入哪一个github
或
gitee
帐户需要一个文件来指明,同时对应用于此帐户的钥匙起一个名字。比如,应用于网站github.com
的钥匙一共有两个,一个起名 github_key_one
另一个起名
github_key_two
,当我们在一个github
仓库部署了密钥id_rsa
后,在使用git管理此仓库时就可以使用钥匙的名字github_key_one
来打开它,同理也可以在部署了id_rsa_two
的
github
帐户中,使用第二把钥匙的名字github_key_two
来打开第二个仓库。由于gitee
和github
不是相同的网站,所认这两把密钥可以分别管理两个github
和gitee
帐户。在配置完成后,需要进行测试,比如
1 | $ ssh -T git@github_key_two |
上述结果表时,github
上的帐户
fengzhenhua-vip
使用密钥github_key_two
。同时,进行其他测试时,也会得出类似的结论。
- clone 一个仓库,然后进行配置密钥。比如
1 | $ git clone git@gitee_key_one:fengzhenhua/check-on-attendence ./test |
上述命令解释为:git使用名字为gitee_key_one
的密钥,而这个密钥对应的网站是gitee.com
,所以上述命令就是拉取
gitee.com
上的 fengzhenhua/check-on-attendence
仓库,并且该仓库配置了密钥id_rsa_two
,之的对此仓库进行管理,增删文件后,就可以使用git add
,
git commit -t
,git push
等命令管理了。
如果对于本地的一个现成的仓库,要push到此仓库,则需要配置文件
1 | $ vim .git/config |
此配置文件重点是如下第7行,
1 | [core] |
- hexo的配置,需要个性文件
_config.yml
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
#repository: git@github.com:fengzhenhua-vip/fengzhenhua-vip.github.io.git
repository: git@gitee_key_one:fengzhenhua/fengzhenhua.git
branch: master
注意,上述第5行是github
的配置方式,第6行是gitee
的配置方式。对于github
在网页进入到帐户后设置密钥即可,但是gitee
需要设置的是个人密钥才可以具备写的权限,否则只有下载权限,这一点要特别注意。