1. 程式人生 > >手把手教你搭建Git伺服器

手把手教你搭建Git伺服器

最近入了臺阿里雲伺服器,就學了學搭建一個Git伺服器,其實也挺簡單的,不過中途還是遇到了一些小問題

首先伺服器系統版本為Ubuntu16.04,如果用Centos版本的同學也可以看看以下總結,相信自己也能動手完成:

  1. 如果沒有安裝ssh的先安裝ssh
  2. 安裝git
  3. 新增git使用者
  4. 建立證書
  5. 初始化Git倉庫
  6. 禁用shell登入
  7. git clone開始玩耍

1.安裝SSH

檢視是否安裝ssh,可以使用命令 whereis ssh

檢視ssh服務是否啟動,可以使用命令 netstat -tl  如果出現 tcp 0 0 *:ssh *:* LISTEN 字樣即服務已啟動或者檢視程序ps -ef | grep ssh

安裝ssh:

sudo apt-get install openssh-server 

2.安裝git

sudo apt-get install git

3. 新增git使用者

sudo adduser git

4.建立證書 

收集所有需要登入的使用者的公鑰,就是他們自己的id_rsa.pub檔案,把所有公鑰匯入到/home/git/.ssh/authorized_keys檔案裡,一行一個。將使用者公鑰傳到伺服器可使用scp命令,然後用cat命令追加到authorized_keys檔案中。

注意這裡,如果你登入的不是git使用者,那麼你需要知道cd ~/.ssh/authorized_keys檔案不是git使用者下的檔案不然後面操作你都會發現需要密碼登入,如何你還配置了git使用者禁止shell登入,那麼會提示這句報錯:

Could not read from remote repository,而這其實是你沒有把公鑰新增到正確的檔案中,是/home/git/.ssh/authorized_keys檔案。注意,這些檔案的 owner 都是第三步建立的使用者git。

5.初始化Git倉庫

選定一個目錄作為Git倉庫,假定是/srv/sample.git,在/srv目錄下輸入命令:

sudo git init --bare sample.git

Git會建立一個裸倉庫並且以.git結尾,然後把owner改為git

sudo chown -R git:git sample.git

6.禁用shell登入

出於安全考慮,建立的git使用者不允許登入shell,可以通過編輯 /etc/passwd 檔案完成,找到類似這一行

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

修改為: 

git:x:1000:1000:git,git,git,git,git:/home/git:/usr/bin/git-shell

7.git clone開始玩耍

現在就可以用git clone 命令來克隆遠端倉庫啦

$ git clone [email protected]:/srv/sample.git
Cloning into 'sample'...
The authenticity of host 'x.x.x.x (x.x.x.x)' can't be established.
ECDSA key fingerprint is SHA256:FqGc7eI0pOiaARjsJ/sfg+byytKKFCAlJCTkSp6zGvU.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '39.108.55.42' (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.

注意 x.x.x.x就是你的ip或者是你的域名,:後面就是你的倉庫位置了

如果你提交到空倉庫出現下面報錯:

Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: 無法推送一些引用到 '[email protected]:/srv/sample.git'

可以使用下面命令強制提交

git push -u -f origin master

後面你就可以自由玩耍啦