gitlab/github 多賬戶下設置 ssh keys


背景

公司之前的版本控制工具一直用的svn,最近開發的新項目,代碼准備改換到了gitlab上進行管理。而我自己平時寫的一些代碼是放在github上進行托管的,這二者都是基於git的開源分布式版本控制系統,在本地可以通過ssh進行遠程登錄驗證和數據傳輸(關於ssh的詳細介紹可以參考這篇博文:http://blog.csdn.net/macrossdzh/article/details/5691924)。

具體操作是利用ssh在本地生成一對公私秘鑰(keys),然后將公鑰添加到注冊的gitlab/github賬戶配置ssh key的地方即可。默認情況下本地生成的秘鑰位於/Users/mac用戶名/.ssh/(mac平台,本文針對os x系統介紹)。

But,問題來了:默認情況下每個賬戶生成的秘鑰位置和名稱都是相同的,這樣后生成的秘鑰就會覆蓋前面的秘鑰導致其失效。解決的辦法就是在生成后一個秘鑰的時候對其重新命名,以避免沖突,同時將不同的秘鑰配置到相對應的Host上面,這樣在訪問不同的遠程倉庫時調用不同的key,沖突也就解決了。具體操作如下:

生成gitlab秘鑰

默認你已經注冊了gitlab/github賬戶,以我自己為例,公司項目用的gitlab,自己代碼托管在github。先進行公司賬號的設置:

本地生成ssh keys命令:ssh-keygen -t rsa -C "注冊的gitlab郵箱",生成的公司秘鑰會提示是否需要重命名,公司gitlab的秘鑰我們就使用默認名稱,直接回車跳過,另外還會提示你設置密碼,設置密碼的話后續登陸會比較麻煩,也直接跳過。成功后大概是這樣的:

圖片描述

查看 .ssh/目錄,可以看到公私秘鑰已經生成,名稱分別為id_rsa.pub、id_rsa

圖片描述

執行命令查看公鑰內容:cat ~/.ssh/id_rsa.pub,或者直接用nano編輯期打開id_rsa.pub。公鑰大概是這個樣子:

圖片描述

將這部分代碼添加到到gitlab賬戶的的SSH Keys中即可。

圖片描述

生成github秘鑰

終端執行命令:ssh-keygen -t rsa -C "注冊的github郵箱",這次一定要注意,對生成定的秘鑰進行重命名,這里暫且重命名為id_rsa_home,同樣不設置密碼。可以看到生成的公私秘鑰已經分別被重命名為id_rsa_home.pubid_rsa_home

圖片描述

可以查看公鑰里面的內容:cat ~/.ssh/id_rsa_home.pub

圖片描述

不要忘記將其拷到github的SSH Keys里~
gitlab和github的秘鑰是分開生成了,可怎么讓這兩份秘鑰分別對應到相應的遠程倉庫呢?就是讓id_rsa.pub認得gitlab,讓id_rsa_home.pub認得github。既然不能自動識別,那就只好手動設置了:

配置config

在.ssh/目錄下新建config文件:touch config,通過nano編輯器進行如下配置:

圖片描述

其中Host對應的名稱是一個別名,命名可以隨意,用來進行遠程連接,當然使用真實的主機名稱也是可以的。HostNameIdentityFile就是各自主機名稱以及對應的秘鑰文件了~
這樣配置之后,兩份秘鑰也就對應到各自相應的倉庫上了。通過設置別名,也就可以設置任意多的賬戶了~

最后利用別名檢測下配置是否成功~

檢測

檢測gitlab連接,如果提示是否建立連接,直接yes就行:
圖片描述

檢測github連接:
圖片描述

不報錯的話,就說明設置成功了!

 

本地只配置了IdentityFile  就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM