如何在同一台电脑配置多个git或者github账号


问题描述

当有多个git账号的时候,比如一个github,用于自己进行一些开发活动,再来一个gitlab,一般是公司内部的git。这两者你的邮箱如果不同的话,就会涉及到一个问题,生成第二个git的key的时候会覆盖第一个的key,导致必然有一个用不了。

问题解决

所谓多个git账号,可能有两种情况:

1 拥有多个github账号,不同的账号对应不同的repo,需要push的时候自动区分账号。

2 拥有多个git的账号,有的是github的,有个事gitlab的,不同的账号对应不同的repo url,需要push的时候自动区分账号。

这两种情况的处理方法是一样的,假设我有两个账号,一个是github上的,一个是gitlab上面的。

生成SSH Key

生成第一个ssh key(这里我用于github)

1
ssh-keygen -t rsa -C "yourmail@github.com"

一路回车下去,生成结果如下图所示:

默认情况下,这个rsa秘钥是在你个人账户的.ssh目录下,存在id_rsa私钥文件和id_rsa.pub公钥文件。然后复制公钥文件中的字符串。进入github账户setting选项SSh and GPC keys,把复制的公钥字符串黏贴到Key的输入框中,保存退出即可。

通过终端ssh测试可知,出现如下提示内容,说明秘钥已经生成并且添加成功。

1
ssh -T git@github.com

生成第二个ssh key(这里我用于gitLab)

1
ssh-keygen -t rsa -f ~/.ssh/id_rsa_gitLab -C "youremail@gitLab.com"

通过上面的命令,你会发现在~/.ssh目录下又多了id_rsa_gitLab和id_rsa_gitLab.pub两个文件。同样复制id_rsa_gitLab.pub公钥文件中的字符串,进入gitLab账户Profile选项SSH keys下,把复制的公钥字符串黏贴到Key的输入框中,保存退出即可。

添加秘钥到SSH agent

因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加的SSH agent中。这里如果你用的github官方的bash,ssh-agent -s,如果是其他的,比如msysgit,eval $(ssh-agent -s)

如果出现 Could not open a connection to your authentication agent 的错误,就是这用一下命令:

1
2
3
ssh-agent bash
ssh-add ~/.ssh/id_rsa_git
ssh-add ~/.ssh/id_rsa_gitLab

最后可以通过下面命令,查看key的设置

1
ssh-add -l

创建并配置config文件

在windows下新建一个txt文本,然后将名字后缀一起改成config即可;而在Linux下的话,在.ssh 目录下,直接vim config,如果在bash下,可以通过以下命令生成config文件

1
touch config

向空白的config文件中添加一下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
# gitlab
Host git.aspectgaming.com
HostName git.aspectgaming.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitLab
User nicholas.chi
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
User git

测试

补充

如果之前有设置全局用户名和邮箱的话,需要unset一下

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

然后在不同的仓库下设置局部的用户名和邮箱

1
2
git config user.email “xxxx@xx.com”
git config user.name “xxxx

这样,以后每次在对应的repo下提交修改,都会自动匹配相应的SSH-Key。

参考&引用

管理git生成的多个ssh key

一台电脑存放多个git账户的多个rsa秘钥

如何同一台电脑配置多个git或github账号

更新时间

发布时间 : 2016-06-18

看你的了!