1. 程式人生 > >GitLab配置ssh key和gitlab雙開

GitLab配置ssh key和gitlab雙開

這篇部落格是參考  GitLab配置ssh key 
中途遇到了幾個問題,所以記錄下

問題1:HTTPS拉下來的專案,使用SSH提交,仍然需要輸入使用者名稱和密碼

    在“二、解決方案”中,我配置ssh後,在git bash裡,push的時候,會讓我輸入使用者名稱和密碼。我不解,因為配置ssh成功後,是不需要輸入使用者名稱和密碼的。

    糾結了會,發現,我是使用SSH來push HTTPS方式下載的專案,導致依舊需要輸入使用者名稱和密碼。
解決方案:我重新clone了一個專案,再修改檔案,再提交,就直接提交了,不需要輸入使用者名稱和密碼。

問題2:config檔案不支援中文


    .ssh/config,如果內容有中文,在提交程式碼的時候就直接報錯了,第12行,就是文章中出現中文的第一行,難道是我的git的問題?

問題3:文章中的筆誤

另外文章中的3.2

  

ssh-keygen -t rsa -C '[email protected]' -f ~/..sh/github-rsa

 應為 

ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/github-rsa
ssh-keygen -t rsa -C '[email protected]
' -f ~/ .ssh/github-rsa


一、背景

    當前很多公司都選擇git作為程式碼版本控制工具,然後自己公司搭建私有的gitlab來管理程式碼,我們在clone程式碼的時候可以選擇http協議,當然我們亦可以選擇ssh協議來拉取程式碼。但是網上很少找到如何用git客戶端生成ssh key,然後配置在gitlab,我當時在做的時候苦於摸索,後來終於找到了解決方案,那麼本文,我們就來聊一聊如何本地git客戶端生成ssh key,然後配置在gitlab裡,而後使用ssh協議進行提交和拉取git遠端倉庫的程式碼。

二、解決方案

1.開啟本地git bash,使用如下命令生成ssh公鑰和私鑰對
ssh-keygen -t rsa -C '

[email protected]' 然後一路回車(-C 引數是你的郵箱地址)


2.然後開啟~/.ssh/id_rsa.pub檔案(~表示使用者目錄,比如我的windows就是C:\Users\Administrator),複製其中的內容


3.開啟gitlab,找到Profile Settings-->SSH Keys--->Add SSH Key,並把上一步中複製的內容貼上到Key所對應的文字框,在Title對應的文字框中給這個sshkey設定一個名字,點選Add key按鈕


4. 到此就完成了gitlab配置ssh key的所有步驟,我們就可以愉快的使用ssh協議進行程式碼的拉取以及提交等操作了

5. 再試一下拉取程式碼和提交程式碼,應該就不需要輸入密碼了


三、本地配置多個ssh key

大多數時候,我們的機器上會有很多的git host,比如公司gitlab、github、oschina等,那我們就需要在本地配置多個ssh key,使得不同的host能使用不同的ssh key ,做法如下(以公司gitlab和github為例):

1.為公司生成一對祕鑰ssh key
    ssh-keygen -t rsa -C '[email protected]' -f ~/.ssh/gitlab-rsa
2.為github生成一對祕鑰ssh key
    ssh-keygen -t rsa -C '[email protected]' -f ~/..sh/github-rsa
3.在~/.ssh目錄下新建名稱為config的檔案(無後綴名)。用於配置多個不同的host使用不同的ssh key,內容如下:

# gitlab
Host gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlab_id-rsa
# github
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_id-rsa
  ​
# 配置檔案引數
# Host : Host可以看作是一個你要識別的模式,對識別的模式,進行配置對應的的主機名和ssh檔案
# HostName : 要登入主機的主機名
# User : 登入名
# IdentityFile : 指明上面User對應的identityFile路徑
4.按照上面的步驟分別往gitlab和github上新增生成的公鑰gitlab_id-rsa.pub和github_id-rsa.pub
5.OK,大功告成,再次執行git命令驗證是不是已經不需要再次驗證許可權了。


6.再次檢視~/..ssh目錄下的檔案,會有gitlab_id-rsa、gitlab_id-rsa.pub和github_id-rsa、github_id-rsa.pub四個檔案

三、總結

我們為什麼要使用ssh協議呢?因為ssh更加安全,然後更加方便,比如我們公司的gitlab由http協議換成了https協議,那麼如果你是使用http協議管理程式碼,那麼需要修改所有的專案中的git地址變成https,這會把我們給逼瘋的!但是如果我們一開始就是用ssh協議,這不需要任何的修改,簡直不能再爽一點了。