搭建git服務器--ssh篇


安裝git

git官網

創建一個git用戶,用來運行git服務

$ sudo adduser git
$ su git
$ cd ~
$ mkdir .ssh

在git用戶新建一個.ssh的目錄,將開發者的SSH公鑰添加到git這個用戶的authorized_keys這個文件當中。

創建證書登錄

  • 設置本地git用戶配置

    `$ git config --global user.name "username"`
    `$ git config --global user.email "user@email.com"`
    
  • 創建SSH Key,私鑰和公鑰

    `$ ssh-keygen -t rsa -C "user@email.com"`
    
    你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可,無需設置密碼。
    
    如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
    
  • 添加SSH Key

    將本地生成的id_rsa.pub內容追加到git服務器git用戶的~/.ssh/authorized_keys
    
  • ssh服務端配置

      $ sudo vim /etc/ssh/sshd_config
      RSAAuthentication yes 
      PubkeyAuthentication yes
      AuthorizedKeysFile      /home/git/.ssh/authorized_keys
    

初始化git倉庫

$ cd ~

$ mkdir project.git

$ git init --bare project.git

禁用git用戶shell登錄

出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改為:

git:x:1001:1001:,,,:/home/git:/usr/local/bin/git-shell

這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。

克隆遠程倉庫

現在,可以通過git clone命令克隆遠程倉庫了,在各自的電腦上運行:

$ git clone git@192.168.1.10:/home/git/project.git   
Cloning into 'project'...   
warning: You appear to have cloned an empty repository.

管理公鑰和權限

如果團隊很小,把每個人的公鑰收集起來放到服務器的/home/git/.ssh/authorized_keys文件里就是可行的。如果團隊有幾百號人,就沒法這么玩了,這時,可以用Gitlab來管理公鑰和權限,Gitlab類似Github。


免責聲明!

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



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