首页 > 技术文章 > git配置不同平台不同邮箱的ssh

olio1993 2019-12-27 14:45 原文

背景:git的使用过程中 需要配置公司gitlab的ssh,也有自己的github的ssh需要。这时之前的配置ssh方式就不够用了。

思路:为不同的邮箱账户生成不同的ssh密钥对,并通过配置config文件的方式,使git可以通过配置文件,根据不同的远程仓库地址自动使用对应的秘钥来完成验证。

先完成github的ssh配置,再来完成gitlab的ssh配置,最后完成config文件配置。

步骤:github配置

1、选择gitlab的邮箱作为全局user  和email,如下

                 git config --global user.name "你gitlab的用户名"

      git config --global user.email "你gitlab的邮箱"

2、生成SSH Key

 ssh-keygen -t rsa -C "你的gitlab账号对应的邮箱"

一直enter,如果已存在密钥文件,可以覆盖掉

3、默认生成的密钥文件在c盘/.ssh/里,为id_rsa和id_rsa.pub,将id_rsa.pub打开(最好用notepad++),将里面的内容粘出到gitlab账号的ssh配置里。

点击gitlab头像-》 settings-》SSH Keys-》Key,粘贴后,点击Add key,如图

 

 然后尝试clone gitlab中的项目到本地

 

github配置

1、与gitlab基本相同,唯一需要注意的是 在生成ssh密钥对的时候,不能一路enter,需要重命名为不同文件名,否则会覆盖;也可以用以下命令直接指定文件名,如

ssh-keygen -t rsa -C "你的gitlab账号对应的邮箱" -f ~/.ssh/id_rsa_github

2、同样把后缀为.pub的秘钥内容粘贴到 你的github账户对应的ssh中并生成秘钥。

3、此时如果你尝试clone你账户远程仓库中的项目的话,会发现连接失败。这是因为git本身默认使用了id_rsa的秘钥来进行ssh链接。

4、将密钥添加到SSH sgent 中,为了让SSH识别其他私钥。

ssh-add ~/.ssh/id_rsa_github,如果失败可以先执行以下命令
ssh-agent bash
 

配置config文件

进入.ssh目录下,新建一个没有后缀的文件,编辑以下内容进去

Host github.com  
    HostName github.com  
    PreferredAuthentications publickey  
    IdentityFile ~/.ssh/id_rsa_github  

Host gitlab  
    HostName 你的gitlab项目域名 
    PreferredAuthentications publickey  
    IdentityFile ~/.ssh/id_rsa

配置中的配置项很重要,一定要配对。

接下来就需要进行验证了。记得打开重连 gitbash已确保配置生效。

扩展:在处理这个问题的时候,从同事那里获得了新思路。即使用git的相关图形管理工具sourcetree来完成ssh的不同配置。试了下还挺方便

推荐阅读