因为我的缘由须要在一台电脑上部署两个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_rsa
与 id_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):
注意此时须要你输入新密钥的名称,一样要注意区别新密钥名称和旧密钥名称,不要相同!!!以后再两次回车,新密钥建立完毕!
查看你的.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/这里是你建立的新密钥的名称
输入如下命令复制你建立的公钥:
clip < ~/.ssh/这里是你建立的新密钥的名称.pub
也能够直接在.ssh目录下找到你建立的新的公钥,文件名为新密钥的名称.pub
,(好比个人是trhx_rsa.pub
),用记事本打开,复制里面的内容,而后打开你的新GitHub帐号主页,依次进入Settings —> SSH and GPG keys —> New SSH key,将刚复制的内容粘贴到Key那里,Title能够随便填,点击Add Key保存。
使用命令cd ~/.ssh
cd到.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目录下的_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 上了