1. 程式人生 > >最詳細的CentOS7下搭建git伺服器

最詳細的CentOS7下搭建git伺服器

第一步:升級|安裝git最新版

1. 檢視 yum 源倉庫的 Git 資訊:

yum into git

可以看出,截至目前,yum 源倉庫中最新的 Git 版本才 1.8.3.1,而檢視最新的 Git 釋出版本,已經 2.9.2 了。

2. 依賴庫安裝

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install gcc perl-ExtUtils-MakeMaker

3. 解除安裝低版本的 Git

通過命令:git –-version 檢視系統帶的版本,Git 版本是: 1.8.3.1,所以先要解除安裝低版本的 Git,命令:

# yum remove git

4. 下載新版的 Git 原始碼包(我放的了  /usr/local/git 的目錄下了,git是我自己mkdir的目錄)

進入/usr/local

cd /usr/local

新建git目錄

mkdir git 
cd git 

線上下載最新的原始碼包

wget https://github.com/git/git/archive/v2.9.2.tar.gz

5. 解壓當前目錄

tar -xzvf v2.9.2.tar.gz

6. 安裝 Git

分別執行以下命令進行編譯安裝,編譯過程可能比較漫長,請耐心等待完成

cd git-2.9.2
make prefix=/usr/local/git all
make prefix=/usr/local/git install

7. 新增到環境變數

vim /etc/profile 

#如果沒有vim,則安裝vim工具   yum install vim

新增這一條:   export PATH="/usr/local/git/bin:$PATH" 

source /etc/profile   #是配置立即生效

8. 檢視版本號

git --version

第二步,建立一個git使用者組和使用者,用來執行git服務(git服務端)

groupadd git
useradd git -g git
passwd git  #引數是使用者名稱

最好切換到git使用者 不然後面新建的git倉庫都要改許可權 煩煩煩!!

su - git 

建立用於收集所有需要登入的使用者公鑰檔案

cd /home/git/
mkdir .ssh      #建立資料夾
chmod 700 .ssh
touch .ssh/authorized_keys   #建立用於收集所有需要登入的使用者公鑰檔案
chmod 600 .ssh/authorized_keys

(注意:搭建到後面測試的時候,一定確保 authorized_keys 檔案許可權一定是 600 不然後面會重複提示輸入密碼)

第三步,建立證書,免密碼登入(git客戶端)

收集所有需要登入的使用者的公鑰(id_rsa.pub)檔案,把所有公鑰匯入到/home/git/.ssh/authorized_keys 檔案內,一行一個。

1.檢查本地是否已經配置了SSH KEY 

window:

右鍵 -> Git Bash  並執行指令如下

ls -al ~/.ssh (‘~’ 是指當前使用者所在目錄,例如:"C:\Users\LWD")

其他作業系統:

在終端上敲

ls -al ~/.ssh (‘~’ 是指當前使用者所在目錄,例如:"/home/git")

-如果有配過,會列出:

 id_rsa (私鑰)

 id_rsa.pub(公鑰)

 這是一個公鑰與私鑰對    

 -如果沒有配過(或者根本就沒有.ssh目錄),我們可以通過 ssh-keygen 程式來建立它們,那麼就進入第二步,新建一個新的SSH KEY

2.新建一個新的SSH KEY (git客戶端)

#郵箱可以隨便填

ssh-keygen -t rsa -C "[email protected]"

首先 ssh-keygen 會確認金鑰的儲存位置和檔名(預設是 .ssh/id_rsa),然後他會要求你輸入兩次金鑰口令,留空即可。所以一般選用預設,全部回車即可。

整個過程大概:

 3.將id_rsa.pub公鑰中的內容新增到Git倉庫設定中

1)進入目錄C:\Users\uestc\.ssh

2)把id_rsa.pub檔案上傳到 git伺服器 路徑 "/tmp/id_rsa.pub"

3)在git伺服器上執行命令

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

4.Git伺服器開啟RSA認證 

在Git伺服器上首先需要將/etc/ssh/sshd_config中將RSA認證開啟

root使用者操作

vim /etc/ssh/sshd_config

新增這三項,(註釋掉的開啟註釋,沒有的要手動敲

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile ~/.ssh/authorized_keys

第四步,初始化Git倉庫(git服務端)

cd /home/git
git init --bare test.git

以上命令會建立一個空倉庫,伺服器上的Git倉庫通常都以.git結尾。

第五步、本地克隆倉庫(git客戶端)

$ git clone [email protected]:/home/git/test.git #例如 git clone [email protected]:/home/git/test.git

Cloning into 'test'...

warning: You appear to have cloned an empty repository.

Checking connectivity... done.

your-ip 為您 Git 所在伺服器 ip 

問題來了

本來根據文件,根據廣大猿友的經驗,我的搭建之路已經完成了,然後最後一步出現了問題。每次跟伺服器進行互動(clone,pull,push),都讓我輸入git的密碼,也就是說,我配置的ssh沒有生效。然後就開始到處找原因,重新生成rsa,提升authorized_keys許可權,重新建立伺服器git賬戶,重新。。。。。

翻遍了 Stack Overflow 和 segmentfault ,兩個小時過去了,問題仍然沒有進展,這麼簡單的東西,問題到底出在哪裡。

就在心灰意冷,準備放棄的時候,不知道是哪裡來的靈感,準備把 authorized_keys 檔案的其他使用者的許可權刪掉,然後就能用了,後就能用了,就能用了,能用了,用了,了~~~~,命令如下,不想多說話,我想靜靜。

chmod 600 authorized_keys

第六步、禁止Shell登入

出於安全考慮,git使用者不允許登入shell,這可以通過編輯/etc/passwd檔案完成。

找到類似下面的一行:

git:x:502:502::/home/git:/bin/bash

改為

git:x:502:502::/home/git:/usr/local/git/bin/git-shell

 

CentOs 重啟ssh服務的命令如下:

service sshd restart

 

參考文件:

centos7下git伺服器端搭建 https://blog.csdn.net/permanent_2008/article/details/73839315

Git之SSH與HTTPS免密碼配置 https://www.jianshu.com/p/b5ec092fc1d1

手把手教你搭建git伺服器  https://www.jianshu.com/p/0c939f63af41

git教程  https://git-scm.com/book/zh/v2/

喜歡我的朋友可以在微信公眾號上關注我: