Gitlab使用SSH創建本地倉庫


情景: 公司有多個項目放在gitlab上。有公司gitlab的賬號密碼,能正確登陸網頁並看到各個項目的commit啊branch啊等等信息。
  • 稍微要注意的一點是這個域名並沒有對外發布,不配置一下host文件,根本ping不通,當然也就沒辦法瀏覽網頁。
  • 再就是我的server系統也沒有裝X界面,不方便在git clone的時候輸入賬號密碼,所以直接選擇使用ssh
一、首先解決下source server沒辦法ping通的問題:在host文件里加一行解析服務器的配置。
格式:解析服務器IP    domain  
舉個栗子: 1.1.1.1    gitlab.a.com. 
Host文件:
windows文件位置:"C:\Windows\System32\drivers\etc\hosts"
linux文件位置:/etc/hosts
二、在要下載代碼的機器上ping一下代碼主機,能通就可以着手配置SSH了。
 
SSH配置,以linux系統為例。
  1. 首先,生成ssh key。
    • 運行
      • ssh-keygen -t rsa -C "<你的登錄郵箱>"
      • 直接去gitlab上ssh的help那里可以復制上面這行命令
      • 命令運行會詢問你生成文件的路徑和名字,如果默認路徑(~/.ssh/id_rsa)原來有文件了,建議你隨便取個名字。
    • 下面這兩行我就直接為空了,回車就行: 
      • Enter passphrase (empty for no passphrase): 
      • Enter same passphrase again:      
    • 運行成功后生成的文件有兩個,一個id_rsa 一個 id_rsa.pub。.pub是公鑰,我們復制到gitlab網頁上個人信息里的key就是這個文件里的全部內容。
  2. 用ssh-add命令來設置ssh代理
    1. ssh-add -l
      • 列一下機器都代理了哪些key. 如果顯示:Could not open a connection to your authentication agent. 說明沒代理,需要把ssh-egent啟動bash: exec ssh-agent bash
    2. ssh-add -D
      • 如果顯示已有代理,可以清空一下。(如果你的機器只有你自己用的話…)
    3. ssh-add ~/.ssh/n
      • 就是剛才上面生成的那個私鑰n
    4. 再運行一下步驟1中的命令list一下,應該可以看到key已經顯示了
    5. ssh-add命令的幫助信息:ssh-add -h
  3. 在網頁上添加SSH Key
    1. 現在把n.pub里的內容添加到你的網頁上。
      • 在Profile Settings-> SSH keys添加。
      • 添加信息的地方也會提示你,要公鑰不要私鑰。文件是.pub結尾的,內容以ssh-rsa開頭你的郵箱結尾。
      • (開頭和結尾都要帶着,整個文件內容一起貼過來就對了)
    2. 現在其實已經設置完畢了。測試命令:
      • ssh git@<gitlab.a.com>
      • 括號里添正確的地址,@前面就是git沒錯,原樣輸入。如果成功的話,會顯示”Welcome to GitLab, 某某某!“這種信息
    3. 現在可以 git clone 了,后面的地址就是你打開網頁上的Project,在頂端SSH框里顯示的地址:git@<gitlab.domain:project.git>, 可以直接復制。
      • git clone git@gitlab.a.com:test/unittest.git
 
PS:發現這種方法有個缺點,每次退出重新登錄以后都要重新運行一下exec ssh-agent bash && ssh-add ~/.ssh/privatekey ,否則就沒有權限了。
解決方案:本來想偷懶看到.ssh文夾下面沒有config文件就沒有配置。運行了一下發現sshd服務是開機啟動的,現在建一個config文件,
#vim ~/.ssh/config

添加內容:
Host yourservername
IdentityFile ~/.ssh/n 

這樣就不需要使用ssh-agent了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM