有时候我需要在同一台电脑上配置多个Github账号,比如博客使用的是GitHub 1,个人开发用的是Github 2。这个时候我们可能需要有两个SSH Key,这就需要配置多个SSH key来实现了

1. 生成1号邮箱的ssh key

ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/id_rsa_qq

这一步会生成两个文件:id_ras_qq 和 id_rsa_qq.pub

2. 配置Github公钥

打开1号邮箱的github.com-‘头像’-‘settings’-‘SSH and GPG keys’-‘new SSH key’
title:随意(可以用来标识这个key对应哪台电脑)
key:填写上一步生成的id_rsa_qq.pub的内容

3. 生成2号邮箱的ssh key

同样的道理不再重复,注意,修改生成的文件名,如id_rsa_163

4. 生成config文件

在~/.ssh目录下新建一个名为config的文件

touch ~/.ssh/config

5. config内容:

# 1号邮箱
Host qq
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_qq

# 2号邮箱
Host 163
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_163

6. 测试是否成功

分别使用以下命令测试是否添加成功(此处的qq和163就是config文件中配置的Host值)

ssh -T git@qq
ssh -T git@163

如果两个命令都返回以下内容就说明配置成功

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

7. 配置仓库设置

首先删除Git配置的全局用户名和邮件地址,接着在每个项目仓库中按照需求设置不同的user.name和 user.email

# 删除全局设置
git config --global --unset user.name
git config --global --unset user.email
# 添加本地设置 需要在每个本地仓库目录下执行
git config --local user.name xxxx
git config --local user.email xxx

8. 添加远程仓库

添加远程仓库的时候,把github.com修改成qq或者163就可以了(即上述config中的Host值),用上面两个Host名称来代替原来的github.com(这一步很重要)如:

# 原始的添加方式
git remote add origin git@github.com:xxx/example.git
# 现在的添加方式
git remote add origin git@qq:xxx/example.git # 1号邮箱
git remote add origin git@163:xxx/example.git # 2号邮箱

9. 拉取远程仓库

# 原始拉取方式
git clone git@github.com:xxx/xx.git /xx/xx/xx
# 现在的拉取方式
git clone git@qq:xxx/xx.git /xx/xx/xx