如果需要在一台电脑部署多个Hexo博客,可以在同一个Github账号下创建多个Pages,但那样只有一个用户名.github.io这样的域名,其他的为子域名用户名.github.io/xxx。也可以多申请几个Github账号,每个账号建立一个Hexo博客,彼此独立。以下介绍如何实施后者。

SSH的公钥是GitHub作为本地仓库和远程仓库连接的唯一标识,一个公钥只能对应一个GitHub账户 ,如果在一台电脑上只生成一对密钥,而使用多个Github账号,那么在其上传代码时,Github无法辨识用户,导致数据交互失败。于是,需要在一台电脑上生成多对密钥,将不同的公钥上配置到不同的GitHub账号,即可解决该问题。

一、生成SSH key

假设已经有了一个Github账号A并配置了密钥,下面添加第二个Github账号B的密钥。

先回到根目录:

cd ~

生成密钥:

ssh-keygen -t rsa -C "账号B对应邮箱"

回车后出现:

Generating public/private rsa key pair.  
 Enter file in which to save the key (xxx/.ssh/id_rsa):

此时需要你输入新密钥的名称,千万要注意区别新密钥名称和旧密钥名称,不要相同,否则会覆盖旧密钥。之后再两次回车,新密钥即创建完成。

二、添加私钥

由于ssh-agent默认只识别公钥,因此要需要添加私钥。

先在~/.ssh目录下清除缓存:

ssh-add -D

添加私钥:

ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/新密钥名称

若出现错误Could not open a connection to your authentication agent.,则需先执行命令ssh-agent bash,再执行以上命令。

三、配置config文件

接着查看~/.ssh/路径下,有没有config文件(旧账号生成密钥时一般产生了),没有则创建一个config文件:

touch config

打开config,添加第二个账号的配置(如果是新生成的config则两个账号一起配置):

#第一个账号,默认使用的账号,不用做任何更改(如果没有则创建)
Host github.com
 HostName github.com
 User 第一个用户名
 IdentityFile ~/.ssh/id_rsa

#第二个新账号,以任意的"xxx"为前缀,即对Host作了区分
Host xxx.github.com
 HostName github.com
 User 第二个用户名
 IdentityFile ~/.ssh/新密钥名称

四、部署与测试

将对应公钥添加至Github账号中,

远程测试:

ssh –T xxx.github.com

出行以下信息说明配置成功:

Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

如果只作以上步骤,会发现给第二个账号用hexo-deploy-git时,显示的是第一个账号push的代码,因为第一个账号过去设置了全局用户名与邮箱配置,在/.deploy_git/.git本地默认采用作为全局的第一个账号。因此需要取消全局用户名/邮箱配置,在各/.deploy_git/本地单独设置用户名与邮箱。

五、单独设置用户名与邮箱

先取消全局用户名与邮箱配置:

git config --global --unset user.name
git config --global --unset user.email

分别进入各/.deploy_git/本地单独设置用户名与邮箱:

git config user.name "用户名"
git config user.email "邮箱"

六、第二个账号使用方法

原来的用法:

git clone git@github.com: 账号用户名/learngit.git

现在的用法:

第一个账号由于Host没改,用法保持不变,第二个账号由于Host设置了别名,应如下使用:

git clone git@xxx.github.com: 账号用户名/learngit.git

上面的xxx就是你之前设置的前缀。

于是,第二个Hexo博客目录下的_config.yml文件的deploy配置应该变化为:

deploy:
  type: git
  repository: git@xxx.github.com:用户名/用户名.github.io.git
  branch: master

这样两个账号的deploy就不会相互干扰。


多个账号递推,把前缀设置成不一样即可。

评论(网址可空)