背景: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的不同配置。试了下还挺方便
原文地址:https://www.cnblogs.com/olio1993/p/12107232.html