背景
-
公司以前的版本控制工具一直用的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_rsa
svn
執行命令查看公鑰內容: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.pub
和id_rsa_home
。spa
能夠查看公鑰裏面的內容: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
對應的名稱是一個別名,命名能夠隨意,用來進行遠程鏈接,固然使用真實的主機名稱也是能夠的。HostName
和IdentityFile
就是各自主機名稱以及對應的祕鑰文件了~
這樣配置以後,兩份祕鑰也就對應到各自相應的倉庫上了。經過設置別名,也就能夠設置任意多的帳戶了~
最後利用別名檢測下配置是否成功~
檢測
-
檢測github
鏈接,若是提示是否創建鏈接,直接yes就行:
檢測gitlab
鏈接:
不報錯的話,就說明設置成功了!