最詳細的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/
喜歡我的朋友可以在微信公眾號上關注我: