配置多個git遠程倉庫的ssh-Key切換

目前的git倉庫如github都是經過使用SSH與客戶端鏈接,若是隻是固定使用單個git倉庫的單個用戶 (first),生成生成密鑰對後,將公鑰保存至github,每次鏈接時SSH客戶端發送本地私鑰(默認~/.ssh/id_rsa)到服務端驗證。單用戶狀況下,鏈接的服務器上保存的公鑰和發送的私鑰天然是配對的。 可是在實際工做中,通常公司內部都有本身的獨立的git倉庫(gitlab.xxx.com),因而就會存在這樣的情 況,在github有私人的帳號first,公司的gitlab中的工做帳號sencord,first和second由於環境不一樣,必須配置不一樣的username和email。因此必須對每一個帳號分別生成獨立的公鑰密鑰對。在連接到github時,使用first的公鑰密鑰對,連接到公司內的gitlab時,使用second的公鑰密鑰對。假設first的密鑰文件爲id_rsa,second的密鑰文件爲id_rsa_second. 在默認狀況下,ssh老是使用id_rsa密鑰文件進行連接,這樣對於second帳號的認證天然是不經過的, 不過,要實現多賬號下的SSH key切換在客戶端作一些配置便可。 首先cd到~/.ssh 使用 ssh-keygen -t -rsa -C ‘second@mail.com’(爲你工做帳號的郵箱地址) 生成新的 SSH key:id_rsa_secondgit

ssh-keygen -t rsa -C 'second@mail.com' -f id_rsa_second

生成後將新的ssh public key添加到內部的gitlab倉庫中, 而後在~/.ssh 目錄下建立config文件,該文件用於配置私鑰對應的服務器。內容以下:github

Host gitlab.xxx.com ##能夠隨意命名,連接時使用這個名字    
HostName gitlab.xxx.com    
User git    
Port 22    
IdentityFile ~/.ssh/id_rsa_second

執行服務器

git clone git@gitlab.xxx.com:second/test.git

時會使用second的id_rsa_second與服務器進行鏈接.而連接非gitlab.xxx.com服務器時則會使用first的密鑰進行連接。至此,大功告成!ssh

注意:git根據配置文件的user.email來獲取git賬號顯示author信息,因此對於多賬號用戶必定要 記得將user.email改成相應的email(second@mail.com)。gitlab

相關文章
相關標籤/搜索