问题描述
当有多个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)
|
|
一路回车下去,生成结果如下图所示:
默认情况下,这个rsa秘钥是在你个人账户的.ssh目录下,存在id_rsa私钥文件和id_rsa.pub公钥文件。然后复制公钥文件中的字符串。进入github账户setting选项SSh and GPC keys,把复制的公钥字符串黏贴到Key的输入框中,保存退出即可。
通过终端ssh测试可知,出现如下提示内容,说明秘钥已经生成并且添加成功。
|
|
生成第二个ssh key(这里我用于gitLab)
|
|
通过上面的命令,你会发现在~/.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 的错误,就是这用一下命令:
|
|
最后可以通过下面命令,查看key的设置
|
|
创建并配置config文件
在windows下新建一个txt文本,然后将名字后缀一起改成config即可;而在Linux下的话,在.ssh 目录下,直接vim config,如果在bash下,可以通过以下命令生成config文件
|
|
向空白的config文件中添加一下内容
|
|
测试
补充
如果之前有设置全局用户名和邮箱的话,需要unset一下
|
|
然后在不同的仓库下设置局部的用户名和邮箱
|
|
这样,以后每次在对应的repo下提交修改,都会自动匹配相应的SSH-Key。
参考&引用
更新时间
发布时间 : 2016-06-18