背景: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的不同配置。試了下還挺方便