一台电脑上Github、Gitlab多账户管理SSH Key冲突的解决方案

解决方案

方案一:同一个邮箱

由于邮箱是识别的唯一手段,那么自然的,这两者采用同一个邮箱,生成的 public key 也会是同一个,上传到 Github 或者 Gitlab 上面,在 Git 的配置中 ,设置好 Global 的配置 :git config –global user.name ‘EricYin’ && git config –global user.email ‘layupbolon@sina.com’ 进行日常的开发是没有问题的。

实际生活中采用同一个邮箱的可能性并不是太大,这就引出了方案二。

方案二:基于config文件

所谓的方案二,原理上就是对 SSH 协议配置 config 文件,对不同的域名采用不同的认证密钥。

1.配置 Git 用户名、邮箱

#全局配置,Github仓库中默认使用此配置
git config --global user.name 'layupbolon' && git config --global user.email 'layupbolon@sina.com' 
# 团队项目配置,每次新创建一个项目,需要执行下
git config --local user.name 'EricYin' && git config --local user.email 'xxxxxx@xxxx.com'

2. 生成 ssh key 上传到 Github/Gitlab

ssh key 默认生成后保存在 ~/.ssh/目录下 ,默认为 id_rsa 和 id_rsa.pub 两个文件,由于我们需要分开配置,所以这么做:

# 生成公钥、密钥的同时指定文件名,Gitlab使用
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "xxxxxx@xxxx.com"

# 生成默认,Github使用
ssh-keygen -t rsa -C "layupbolon@sina.com"

在执行完以上命令后会生成如下几个文件

3. 配置 config 文件

在 ~/.ssh目录下,如果不存在,则新建 touch ~/.ssh/config文件 ,文件内容添加如下:

Host git@*.corp.xxx.com
HostName http://*.corp.xxx.com
IdentityFile ~/.ssh/id_rsa.gitlab
User EricYin

Host git@github.com
HostName https://github.com
IdentityFile ~/.ssh/id_rsa
User layupbolon

4. 上传public key 到 Github/Gitlab

以gitlab为例:

登录gitlab
打开profile setting中的ssh keys
在上图位置填入~/.ssh/id_rsa.gitlab.pub中的内容

5. 验证是否OK

看到这些 Welcome 信息,说明就是 OK的了。

建议在clone项目的时候使用ssh方式,如果使用git工具的话,例如sourceTree等,可以在项目上切换ssh,或者切换remote,以上!

原文地址:https://www.cnblogs.com/Tavi/p/12514047.html