gitlab/github 多帳戶下設置 ssh keys

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

具體操做是利用ssh在本地生成一對公私祕鑰(keys),而後將公鑰添加到註冊的gitlab/github帳戶配置ssh key的地方便可。默認狀況下本地生成的祕鑰位於/Users/mac用戶名/.ssh/(mac平臺,本文針對os x系統介紹)。github

But,問題來了:默認狀況下每一個帳戶生成的祕鑰位置和名稱都是相同的,這樣後生成的祕鑰就會覆蓋前面的祕鑰致使其失效。解決的辦法就是在生成後一個祕鑰的時候對其從新命名,以免衝突,同時將不一樣的祕鑰配置到相對應的Host上面,這樣在訪問不一樣的遠程倉庫時調用不一樣的key,衝突也就解決了。具體操做以下:ssh

生成gitlab祕鑰
-
默認你已經註冊了gitlab/github帳戶,以我本身爲例,公司項目用的gitlab,本身代碼託管在github。先進行公司帳號的設置:編輯器

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

圖片描述

查看 .ssh/目錄,能夠看到公私祕鑰已經生成,名稱分別爲id_rsa.pub、id_rsasvn

圖片描述

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

圖片描述

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

圖片描述

生成github祕鑰
-
終端執行命令:ssh-keygen -t rsa -C "註冊的github郵箱",此次必定要注意,對生成定的祕鑰進行重命名,這裏暫且重命名爲id_rsa_home,一樣不設置密碼。能夠看到生成的公私祕鑰已經分別被重命名爲id_rsa_home.pubid_rsa_homespa

圖片描述

能夠查看公鑰裏面的內容:cat ~/.ssh/id_rsa_home.pub.net

圖片描述

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

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

圖片描述

其中Host對應的名稱是一個別名,命名能夠隨意,用來進行遠程鏈接,固然使用真實的主機名稱也是能夠的。HostNameIdentityFile就是各自主機名稱以及對應的祕鑰文件了~
這樣配置以後,兩份祕鑰也就對應到各自相應的倉庫上了。經過設置別名,也就能夠設置任意多的帳戶了~

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

檢測
-
檢測github鏈接,若是提示是否創建鏈接,直接yes就行:
圖片描述

檢測gitlab鏈接:
圖片描述

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

相關文章
相關標籤/搜索