手把手教你搭建Git伺服器
阿新 • • 發佈:2018-12-22
最近入了臺阿里雲伺服器,就學了學搭建一個Git伺服器,其實也挺簡單的,不過中途還是遇到了一些小問題
首先伺服器系統版本為Ubuntu16.04,如果用Centos版本的同學也可以看看以下總結,相信自己也能動手完成:
- 如果沒有安裝ssh的先安裝ssh
- 安裝git
- 新增git使用者
- 建立證書
- 初始化Git倉庫
- 禁用shell登入
- 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登入,那麼會提示這句報錯:
其實是你沒有把公鑰新增到正確的檔案中,是
/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
後面你就可以自由玩耍啦