目前很多公司都選擇git作為代碼版本控制工具,然後自己公司搭建私有的gitlab來管理代碼,我們在clone代碼的時候可以選擇http協定,當然我們亦可以選擇ssh協定來拉取代碼。但是網上很少找到如何用git用戶端生成ssh key,然後配置在gitlab,我當時在做的時候苦于摸索,後來終于找到了解決方案,那麼本文,我們就來聊一聊如何本地git用戶端生成ssh key,然後配置在gitlab裡,而後使用ssh協定進行送出和拉取git遠端倉庫的代碼。
打開本地git bash,使用如下指令生成ssh公鑰和私鑰對
<code>ssh-keygen -t rsa -C '[email protected]'</code> 然後一路回車(-C 參數是你的郵箱位址)

然後打開~/.ssh/id_rsa.pub檔案(~表示使用者目錄,比如我的windows就是C:\Users\Administrator),複制其中的内容
打開gitlab,找到Profile Settings-->SSH Keys--->Add SSH Key,并把上一步中複制的内容粘貼到Key所對應的文本框,在Title對應的文本框中給這個sshkey設定一個名字,點選Add key按鈕
4. 到此就完成了gitlab配置ssh key的所有步驟,我們就可以愉快的使用ssh協定進行代碼的拉取以及送出等操作了
5. 再試一下拉取代碼和送出代碼,應該就不需要輸入密碼了
大多數時候,我們的機器上會有很多的git host,比如公司gitlab、github、oschina等,那我們就需要在本地配置多個ssh key,使得不同的host能使用不同的ssh key ,做法如下(以公司gitlab和github為例):
為公司生成一對秘鑰ssh key
為github生成一對秘鑰ssh key
在~/.ssh目錄下建立名稱為config的檔案(無字尾名)。用于配置多個不同的host使用不同的ssh key,内容如下:
按照上面的步驟分别往gitlab和github上添加生成的公鑰gitlab_id-rsa.pub和github_id-rsa.pub
OK,大功告成,再次執行git指令驗證是不是已經不需要再次驗證權限了。
再次檢視~/..ssh目錄下的檔案,會有gitlab_id-rsa、gitlab_id-rsa.pub和github_id-rsa、github_id-rsa.pub四個檔案
我們為什麼要使用ssh協定呢?因為ssh更加安全,然後更加友善,比如我們公司的gitlab由http協定換成了https協定,那麼如果你是使用http協定管理代碼,那麼需要修改所有的項目中的git位址變成https,這會把我們給逼瘋的!但是如果我們一開始就是用ssh協定,這不需要任何的修改,簡直不能再爽一點了。