# TRHX'S BLOG

# 一台电脑使用两个/多个GitHub账号部署两个/多个Hexo博客

TRHX'BLOG

2019-01-18

Hexo

Hexo

Github

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

原理分析：

> - SSH的公钥是GitHub作为本地仓库和远程仓库连接的唯一标识，一个公钥只能对应一个GitHub账户，如果将一个相同的公钥上传到不同的GitHub账户，GitHub则无法做出辨识，进而导致错误
> - 一台电脑，可以生成多对公私钥，可以通过配置，将不同的公钥上传到不同的GitHub账号，那么就不存在单个公钥绑定多个GitHub账号的情况存在了

相关问题报错：

> - 同一台电脑部署第二个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.`

# - 查看当前密钥

首先我们打开终端输入`ls ~/.ssh/`可以查看当前已有的密钥，显示`id_rsa` 与 `id_rsa_pub`说明已经有一对密钥

# - 创建新的密钥

首先使用以下命令进入 SSH根目录下：

    1

    cd ~/.ssh/

## 方法一

直接使用以下命令创建新密钥，然后两次回车即可：

    1

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

注意区别新密钥名称和旧密钥名称，不要相同！！！

## 方法二

使用下面命令行创建新密钥：

    1

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

回车后会出现：

    1
    2

    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文件：

    1

    touch config

用记事本或者其他工具打开config文件（注意config文件是没有任何后缀名的），写入以下配置：

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    #第一个账号，默认使用的账号，不用做任何更改
    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

输入以下命令复制你创建的公钥：

    1

    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 ~/.ssh`cd到.ssh根目录下，依次执行以下命令：

    1
    2
    3

    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文件中的命名

    1
    2

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

依次显示以下信息, 则说明配置成功：

    1

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

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

执行如下命令，取消全局用户名和邮箱配置（如果已经设置了全局的话）：

    1
    2

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

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

    1
    2

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

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

执行以下命令可以查看设置是否成功

    1

    git config --list

# - hexo 配置文件修改git地址

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

    1
    2
    3
    4

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

比如我的配置：

    1
    2
    3
    4

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

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

最后更新于 2019年7月31日

###### 上一页

#### 新年快乐！

###### BLOG

###### 下一页

#### Python3 自学笔记 C09

###### 文件 异常

#### 评论

## TRHX'S BLOG

求知若饥 虚心若愚

本文目录
站内导航

- 所有文章
- 文章归档
- RSS订阅
- 我的友链
- 留言板
- 关于博主

QQ交流群

访客地图

域名转让

以下闲置域名低价转让，价格非常美丽，给钱就扔，欢迎骚扰：

52bug.club
52bug.xyz
52bug.top
NeedForSpeed.site
文章分类

- BLOG
  (3)
- CDN
  (1)
- Hexo
  (5)
- Java
  (1)
- Linux
  (2)
- Markdown
  (2)
- Python3
  (11)
- WEB前端
  (2)
- 图床
  (1)

热门标签
BLOG CDN Deepin Elicpse Github Github Pages HTTPS Hexo ICP备案 JDBC JS 预加载 Markdown Material X PEP8 PicGo Pygame Python SQL Server 2012 Ubuntu VMware if语句 input()函数 instant.page jsDeliver jsDelivr spfk while循环 主题个性化 公安备案 函数 列表 变量 图床 垃圾 字典 异常 技巧 操作列表 数据类型 文件 模块 类 继承 编辑器
最近在听