一台电脑绑定两个github帐号教程
思路
ssh 方式链接到 Github,需要唯一的公钥,如果想同一台电脑绑定两个Github 帐号,需要两个条件:
- 能够生成两对 私钥/公钥
- push 时,可以区分两个账户,推送到相应的仓库
解决方案:
- 生成 私钥/公钥 时,密钥文件命名避免重复
- 设置不同 Host 对应同一 HostName ,但密钥不同
- 取消 git 全局
用户名/邮箱
设置,为每个仓库独立设置 用户名/邮箱
操作方法
- 查看已有密钥
-
- 输入命令
ls ~/.ssh/
,看到id_rsa
与id_rsa_pub
则说明已经有一对密钥。
- 输入命令
- 生成新的公钥,并命名为
id_rsa_2
(保证与之前密钥文件名称不同即可)
-
ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "yourmail@xxx.com"
- 在
.ssh
文件夹下新建config
文件并编辑,另不同 Host 实际映射到同一HostName
,但密钥文件不同。
# default Host pc.github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa # two Host corporation.github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa_2
这里有个坑需要注意:
首先要确保这里的Host是不相同的,比如我关联自己的账号,host写成 pc.github.com;关联公司的账号,host写成 corporation.github.com
HostName写域名:我这里关联的两个账号都是github,如果公司使用的是gitee,那么换成gitee.com就可以。
IdentityFile写的就是对应的钥匙名称了。
4. 将生成的 id_rsa.pub
,id_rsa_2.pub
内容添加到对应的账号上。
5. 测试 ssh 链接
ssh -T git@pc.github.com
ssh -T git@corporation.github.com
# Hi IEIT! You've successfully authenticated, but GitHub does not provide shell access. # 出现上边这句,表示链接成功
这里有个坑就是标红的地方与Host相同
6. 取消全局 用户名/邮箱设置,并进入项目文件夹单独设置
# 取消全局 用户名/邮箱 配置 git config –global –unset user.name git config –global –unset user.email # 单独设置每个repo 用户名/邮箱 git config user.email “xxxx@xx.com” git config user.name “xxxx”
7. 命令行进入项目目录,重建 origin (whatever 为相应项目地址)
git remote rm origin git remote add origin git@pc.github.com:whatever (这里关联自己账号)
或者:
git remote add origin git@corporation.github.com:whatever (这里关联公司账号)
这里有个坑就是标红的地方与Host相同
这样就可以将自己的密钥对应到不同账号了。
然后就是正常的git操作,比如可以 push 测试一下
git push origin master
如果成功就OK啦。
自己踩过的坑,记下来。