一台电脑部署两个或多个 Hexo+Github Pages 博客(一台电脑使用两个或多个 GitHub 帐号)


因为我的缘由须要在一台电脑上部署两个Hexo博客,原本觉得挺简单,没想到问题重重,首先是一个GitHub帐号只能搭建一个Hexo博客,所以就须要使用其余GitHub帐号;其次是一台电脑绑定两个GitHub帐号,则须要两对公钥,在处理第二个问题时遇到的问题比较多,由于对这方面一窍不通,仍是小白,因此折腾了一下午才解决,网上好多教程我都看不懂,以为不(自)够(己)详(太)细(笨),所以详细记录一下git

原理分析:github

  • SSH的公钥是GitHub做为本地仓库和远程仓库链接的惟一标识,一个公钥只能对应一个GitHub帐户,若是将一个相同的公钥上传到不一样的GitHub帐户,GitHub则没法作出辨识,进而致使错误
  • 一台电脑,能够生成多对公私钥,能够经过配置,将不一样的公钥上传到不一样的GitHub帐号,那么就不存在单个公钥绑定多个GitHub帐号的状况存在了

相关问题报错:web

  • 同一台电脑部署第二个Hexo博客执行hexo g -d时报错:ERROR: Permission to xxxxxx/xxxxxx.github.io.git denied to xxxxxx.
  • 添加新的 SSH 密钥 到 SSH agent 执行ssh-add xxx时报错:Could not open a connection to your authentication agent.
  • 单独设置用户名/邮箱时报错:fatal: not in a git directory

如下是详细过程:
前提:假设你的第二个博客相关配置操做已经顺利完成,但使用hexo g -d命令部署到 GitHub 上时报错:ERROR: Permission to xxxxxx/xxxxxx.github.io.git denied to xxxxxx.docker

- 查看当前密钥

首先咱们打开终端输入ls ~/.ssh/能够查看当前已有的密钥,显示id_rsaid_rsa_pub说明已经有一对密钥shell

- 建立新的密钥

首先使用如下命令进入 SSH根目录下:缓存

cd ~/.ssh/

方法一

直接使用如下命令建立新密钥,而后两次回车便可:bash

ssh-keygen -t rsa -f  ~/.ssh/这里是新密钥名称 -C "这里是你的邮箱"

注意区别新密钥名称和旧密钥名称,不要相同!!!hexo

方法二

使用下面命令行建立新密钥:less

ssh-keygen -t rsa -C "这里是你的邮箱"

回车后会出现:ssh

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

注意此时须要你输入新密钥的名称,一样要注意区别新密钥名称和旧密钥名称,不要相同!!!以后再两次回车,新密钥建立完毕!

- 配置config

查看你的.ssh/根路径下, 有没有config文件,( 好比个人路径为C:\Users\Lenovo.ssh)没有则使用如下命令建立一个config文件:

touch config

用记事本或者其余工具打开config文件(注意config文件是没有任何后缀名的),写入如下配置:

#第一个帐号,默认使用的帐号,不用作任何更改
Host github.com
	HostName github.com
	User git
	IdentityFile ~/.ssh/id_rsa
	
#第二个新帐号,#"xxxxxx"为前缀名,能够任意设置,要记住,后面须要用到
Host xxxxxx.github.com
	HostName github.com
	User git
	IdentityFile ~/.ssh/这里是你建立的新密钥的名称

- 设置新GitHub帐户SSH key

输入如下命令复制你建立的公钥:

clip < ~/.ssh/这里是你建立的新密钥的名称.pub

也能够直接在.ssh目录下找到你建立的新的公钥,文件名为新密钥的名称.pub,(好比个人是trhx_rsa.pub),用记事本打开,复制里面的内容,而后打开你的新GitHub帐号主页,依次进入Settings —> SSH and GPG keys —> New SSH key,将刚复制的内容粘贴到Key那里,Title能够随便填,点击Add Key保存。

- 清空本地的 SSH 缓存,添加新的 SSH 密钥 到 SSH agent中

使用命令cd ~/.sshcd到.ssh根目录下,依次执行如下命令:

ssh-add -D
ssh-add xxxxxx #旧密钥名称,通常是id_rsa
ssh-add xxxxxx #新建立的密钥名称

若是执行以上命令出现错误:Could not open a connection to your authentication agent.,那么就须要先执行ssh-agent bash,再执行以上命令

- 验证配置是否成功

依次执行如下命令,第一个为默认ssh_key验证;第二个为新的ssh_key验证,其中“xxxxxx”为你先前在config文件中的命名

ssh -T git@github.com
ssh -T git@xxxxxxx.github.com

依次显示如下信息, 则说明配置成功:

Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.

- 取消全局用户名/邮箱配置,单独设置用户名/邮箱

执行以下命令,取消全局用户名和邮箱配置(若是已经设置了全局的话):

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

分别进入你的两个Hexo博客.git目录下执行如下命令单独设置用户名/邮箱:

git config user.name "这里是用户名"
git config user.email "这里是你的邮箱"

若是此时报错:fatal: not in a git directory,说明你没有进入.git目录下,具体路径:\Hexo\.deploy_git\.git,.git目录是隐藏的,须要你设置隐藏目录可见

执行如下命令能够查看设置是否成功

git config --list

- hexo 配置文件修改git地址

打开你的第二个博客Hexo目录下的_config.yml文件,找到deploy关键字,写入如下配置并保存:

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

好比个人配置:

deploy:
  type: git
  repository: git@love109.github.com:love109/love109.github.io.git
  branch: master

大功告成,再次执行hexo g -d就能成功将新的博客部署到 Github 上了

相关文章
相关标签/搜索