如何同时配置两个github账户
目录
警告
本文最后更新于 2023-02-03,文中内容可能已过时,请谨慎使用。
注意
本文使用两个账户举例,事实上可以同时配置更多账户,操作步骤相同
1.分别生成SSH密钥
我们首先使用下面的命令分别生成两对SSH密钥
ssh-keygen -t rsa -C "email1" -f "id_rsa_1"
ssh-keygen -t rsa -C "email2" -f "id_rsa_2"
-f
用于指定用来保存密钥的文件名-C
用于添加注释(一般填自己绑定的邮箱)
账户1的公钥为id_rsa_1.pub
,私钥为id_rsa_1
账户2的公钥为id_rsa_2.pub
,私钥为id_rsa_2
2.将SSH密钥添加到相应的GitHub账户中
复制对应的公钥,比如~/.ssh/id_rsa_1.pub
,然后登录你的个人GitHub账户:
- 转到
Settings
- 在左边的菜单中选择
SSH and GPG keys
- 点击
New SSH key
,输入一个合适的title
,并把公钥粘贴在下面的方框中 - 点击
Add key
,就完成了!
账户2的步骤同理!
3.编辑配置文件
SSH
的配置文件在~/.ssh/config
, 写入以下内容
# github
Host user_1_github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_1
Host user_2_github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_2
使用下面的命令测试第2步是否配置成功
ssh -T git@user_1_github.com
ssh -T git@user_2_github.com
输出的内容如下,说明第2步配置没问题!
$ ssh -T git@user_1_github.com
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@user_2_github.com
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
上面的配置会要求ssh-agent:
- 使用
id_rsa_1
作为任何使用git@user_1_github.com
的Git URL
的密钥 - 使用
id_rsa_2
作为任何使用git@user_2_github.com
的Git URL
的密钥
这样,在克隆和关联远程仓库的时候要特别注意要修改原来的Git URL
比如账户1仓库的ssh
地址之前是git@github.com:user_1/test.git
,现在在关联仓库时需要修改为git@user_1_github.com:user_1/test.git
,账户2的步骤同理
技巧
建议把常用的那个账户的Host设置为github.com,这样就能减少很多url的修改操作!
4.另一种方法
如果你不想第3步这么麻烦的修改url的话,还有一种办法。使用ssh-agent
来保证使用特定的SSH密钥
这种方法不需要SSH配置规则。相反,我们手动确保在进行任何Git操作时,ssh-agent中只有相关的密钥。
ssh-agent bash # 建议先执行一下本命令
ssh-add -l # 显示当前的ssh-agent连接
ssh-add -D # 清空之前的ssh-agent连接
# 绑定你需要的密钥连接,比如你要使用账户1
ssh-add ~/.ssh/id_rsa_1
这样ssh-agent
就将密钥映射到了工作的GitHub
账户,不用繁琐的修改url
了