Gitlab配置ssh連接

ssh公鑰登錄

一般在管理遠(yuǎn)程主機(jī)時(shí),都用ssh登錄,ssh user@host,但是這樣每次會(huì)使用密碼。 使用ssh-keygen生成的密鑰對(duì),然后將公鑰添加的目標(biāo)主機(jī)的~/.ssh/authorized_keys文件中,當(dāng)前主機(jī)就成為可信任的主機(jī),下次使用ssh登錄時(shí),就不用輸入密碼了。

Gitlab,Github都支持這種方式的連接,具體操作步驟如下:

第一步:生成密鑰對(duì)

使用ssh-keygen生成密鑰對(duì):

ssh-keygen-t rsa-C"你的郵箱"

這樣就在主目錄下的.ssh目錄中生成了兩個(gè)文件id_rsa和id_rsa.pub。id_rsa中保存的是私鑰,id_rsa.pub中保存的是公鑰。

第二步:添加公鑰

拷貝公鑰到剪切板:

pbcopy

在 個(gè)人資料->SSH Keys->Add new 頁(yè)面中粘貼公鑰,就添加完成了。

第三步:測(cè)試

ssh加-T選項(xiàng)測(cè)試目標(biāo)服務(wù)是否可用:

ssh-T git@"你的gitlab服務(wù)器地址"

第一次連接時(shí),會(huì)詢問(wèn)是否信任主機(jī),確認(rèn)后輸入yes。如果看到Welcome to GitLab, Rusher!就算配置成功了,接下來(lái)就可以通過(guò)ssh來(lái)提交代碼了。

Windows

下載Git-Bash

生成密鑰對(duì)ssh-keygen -t rsa -C "你的郵箱"

生成之后用notepad c:/User/Administrator/.ssh/id_rsa.pub打開(kāi)文件,然后將公鑰添加的Gitlab中.

測(cè)試ssh -T git@"你的gitlab服務(wù)器地址"

Gitlab服務(wù)端配置

(只使用客戶端可忽略這節(jié)內(nèi)容)

在客戶端提交時(shí)發(fā)現(xiàn)以下錯(cuò)誤:

/usr/local/lib/ruby/1.9.1/net/http.rb:762:in`initialize': getaddrinfo: Name or service not known (SocketError)

from /usr/local/lib/ruby/1.9.1/net/http.rb:762:in `open'

from /usr/local/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'

from/usr/local/lib/ruby/1.9.1/timeout.rb:54:in`timeout'

from /usr/local/lib/ruby/1.9.1/timeout.rb:99:in `timeout'

from /usr/local/lib/ruby/1.9.1/net/http.rb:762:in `connect'

from/usr/local/lib/ruby/1.9.1/net/http.rb:755:in`do_start'

from /usr/local/lib/ruby/1.9.1/net/http.rb:744:in `start'

from /home/git/gitlab-shell/lib/gitlab_net.rb:64:in `get'

from/home/git/gitlab-shell/lib/gitlab_net.rb:30:in`check'

from ./check:11:in `'

在Github的issue里找到說(shuō)先運(yùn)行一下/home/git/gitlab-shell/bin/check。先做檢測(cè),發(fā)現(xiàn)和上面一樣的錯(cuò)誤。看錯(cuò)誤是找不到域名,所以在/etc/hosts中需要配置一個(gè)地址的映射。

127.0.0.1YOUR_DOMIN# YOUR_DOMIN是在/home/git/gitlab-shell/config.yml中配置的gitlab_url

擴(kuò)展:ssh多用戶切換

在配置Gitlab的時(shí)候一開(kāi)始是用管理員賬戶做測(cè)試的,后來(lái)建了我自己的賬號(hào)做開(kāi)發(fā)。這樣我的本地就有兩個(gè)Gitlab賬號(hào),如果直接用ssh來(lái)提交代碼有問(wèn)題,因?yàn)閟sh默認(rèn)使用一開(kāi)始生成id_rsa那個(gè)密鑰對(duì),但不同的賬號(hào)又不能對(duì)應(yīng)到同一個(gè)公鑰上。如果多個(gè)賬戶一起用,還需要做些配置。

假如有兩個(gè)賬號(hào):root和rusher。

第一步:為兩個(gè)賬戶分別生成密鑰對(duì)

提示在哪里存儲(chǔ)密鑰文件的時(shí)候,對(duì)不同的賬號(hào)填不同的路徑,root放在/Users/you/.ssh/id_rsa_gitlab_root下,rusher的放在/Users/you/.ssh/id_rsa_gitlab_rusher

ssh-keygen-t rsa-C rusher@you.com

Generatingpublic/privatersa key pair.

Enterfileinwhich to save the key(/Users/you/.ssh/id_rsa):/Users/you/.ssh/id_rsa_gitlab_rusher

Enterpassphrase(emptyfornopassphrase):

Entersame passphrase again:

Youridentification has been savedin/Users/you/.ssh/id_rsa_gitlab_rusher.

Yourpublickey has been savedin/Users/you/.ssh/id_rsa_gitlab_rusher.pub.

ssh-keygen-t rsa-C root@you.com

Generatingpublic/privatersa key pair.

Enterfileinwhich to save the key(/Users/you/.ssh/id_rsa):/Users/you/.ssh/id_rsa_gitlab_root

Enterpassphrase(emptyfornopassphrase):

Entersame passphrase again:

Youridentification has been savedin/Users/you/.ssh/id_rsa_gitlab_root.

Yourpublickey has been savedin/Users/you/.ssh/id_rsa_gitlab_root.pub.

還是需要將兩個(gè)賬號(hào)的公鑰分別添加的各自賬號(hào)的SSH Keys中(rusher: id_rsa_gitlab_rusher.pub和root: id_rsa_gitlab_root.pub) 。

ssh-add/Users/you/.ssh/id_rsa_gitlab_rusher

ssh-add/Users/you/.ssh/id_rsa_gitlab_root

第二步:添加ssh配置文件

在.ssh目錄中添加config文件,此文件的為不同的賬戶添加別名(root: root_gitlab 和 rusher: rusher_gitlab),連接還是同一個(gè)服務(wù)器,但是使用不同的密鑰文件,所以才能將兩個(gè)賬號(hào)分開(kāi)。

# for root

Hostroot_gitlab

HostNamegit.you.com

Usergit

IdentityFile/Users/you/.ssh/id_rsa_gitlab

# for rusher

Hostrusher_gitlab

HostNamegit.you.com

Usergit

IdentityFile/Users/you/.ssh/id_rsa_gitlab_rusher

配置完成后,使用ssh-add命令

接下來(lái)這樣使用別名測(cè)試,可以查看是否對(duì)應(yīng)到了正確的賬號(hào)上:

ssh-T git@root_gitlab

ssh-T git@rusher_gitlab

第三步:在git項(xiàng)目中使用別名

正常的項(xiàng)目,我們clone下來(lái)之后,origin對(duì)應(yīng)的URL假設(shè)為:git@git.:Rusher/helloworld,現(xiàn)在需要做個(gè)改動(dòng),將git.要換成rusher_gitlab,

git remoteset-url origin git@rusher_gitlab:Rusher/helloworld

如果是root用戶的項(xiàng)目:

git remoteset-url origin git@root_gitlab:root/helloworld

以上配置ssh的方法同樣適用于Github,Bitbucket等網(wǎng)站。

參考文檔

Github Help

為不同賬號(hào)生成密鑰對(duì)后,需要使用ssh-add將密鑰添加進(jìn)來(lái),否則ssh不能使用正確的密鑰

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評(píng)論 19 139
  • GIT分布式版本控制系統(tǒng)最佳實(shí)踐 這篇文章來(lái)自于老男孩教育高級(jí)架構(gòu)師班12期的徐亮偉同學(xué)。 首先感謝老男孩架構(gòu)師班...
    meng_philip123閱讀 3,819評(píng)論 4 36
  • GitLab是一個(gè)利用Ruby on Rails開(kāi)發(fā)的開(kāi)源應(yīng)用程序,實(shí)現(xiàn)一個(gè)自托管的Git項(xiàng)目倉(cāng)庫(kù),可通過(guò)Web界...
    YHWXQ簡(jiǎn)簡(jiǎn)單單的生活閱讀 88,349評(píng)論 3 37
  • 背景 公司最近將代碼由svn遷移到了gitlab來(lái)托管,我個(gè)人平時(shí)也經(jīng)常使用Github,可是公司郵箱與我的Git...
    洛城夜雨閱讀 2,071評(píng)論 0 5
  • ## 1、選擇創(chuàng)建新項(xiàng)目 登錄成功后,點(diǎn)擊導(dǎo)航條上的 “+” 就可以進(jìn)入創(chuàng)建項(xiàng)目的頁(yè)面 ## 2、填寫(xiě)項(xiàng)目的信息 ...
    smkoc閱讀 2,502評(píng)論 0 1

友情鏈接更多精彩內(nèi)容