Linux(CentOS)搭建git服務端

本次環境:

  • CentOS Linux release 7.2.1511
  • Git 1.8.3.1

1.查看是否已安裝git

$ rpm -qa git

若已安裝,可以用yum remove git 刪除。

2.yum安裝git

$ yum install -y git

安裝成功,查看git版本信息:

$ git --version

3.添加git用戶,運行git服務

$ groupadd git
$ adduser git -g git

4.創建ssh認證文件authorized_keys並設置權限

authorized_keys用於存放客戶端的ssh key,利用SSH的公鑰來完成驗證,避免git clone時輸入密碼。

$ cd /home/git
$ mkdir .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ cd /home
$ chown -R git:git git

5.Git服務器打開RSA認證

編輯sshd_config文件

$ vi /etc/ssh/sshd_config

如下三項:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile   .ssh/authorized_keys

可以看到認證公鑰目錄正是上面我們創建的/home/git/.ssh/authorized_keys。

6.客戶端創建ssh key並保存至服務端authorized_keys文件

(a)windows系統

打開Git Gui,“幫助”—“Show SSH Key”,將id_rsa.pub公鑰中的內容保存至服務端authorized_keys文件(多個客戶端,每個key一行)。

這裏寫圖片描述

這裏寫圖片描述

$ vi /home/git/.ssh/authorized_keys

編輯後保存。

(b)MacOS系統

安裝git步驟略。
……
創建一個全球用戶名、全球郵箱:

$ git config --global user.name "username"
$ git config --global user.email "[email protected]"

cd ~進入根目錄
輸入命令ssh-keygen生成ssh-key,如果有提示,一直按回車

$ ssh-keygen

這裏寫圖片描述

提示已經生成rsa文件到指定目錄。
同樣,查看id_rsa.pub公鑰中的內容,並保存至服務端authorized_keys文件。

7.創建git倉庫

爲了方便,我們把倉庫也放入home目錄。
給予git權限。

$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo

初始化該倉庫

$ cd gitrepo/
$ git init --bare test_repo.git

提示:初始化空的 Git 版本庫於 /home/gitrepo/test_repo.git/。

給予git權限:

$ chown -R git:git test_repo.git

注意:以後每創建一個新的倉庫,都要執行這步操作: 修改倉庫所屬用戶爲git

8.git clone

現在嘗試用git clone剛纔新建的test_repo項目:

D:\gitGetTest>git clone git@106.14.224.204:/home/gitrepo/test_repo.git

第一次clone會提示:

The authenticity of host 'xx.xx.xx.xx' can't be established.
ECDSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

輸入yes回車即可,後面不會再提示。

這裏寫圖片描述

可以看到,test_repo項目已經clone至客戶端。

9.禁用git用戶的shell登錄

出於安全考慮,禁止git用戶的shell登錄,通過編輯/etc/passwd文件完成。

$ vi /etc/passwd

修改
git:x:1000:1001::/home/git:/bin/bash

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

這樣,git用戶可以正常通過ssh使用git,但無法登錄shell。

綜上,git服務端已經搭建完畢。

10.一些命令

1.查看系統用戶組

$ cut -d: -f1 /etc/group

-d:指定字段的分隔符,默認的字段分隔符爲“TAB”;
-f:顯示指定字段的內容;

2.查看系統用戶

$ cut -d: -f1 /etc/passwd

3.clone倉庫

$ git clone git@gitServer_ip:/home/gitrepo/sample.git

4.push已有倉庫

// 以master分支示範
$ git checkout master
$ git remote rm origin
$ git remote add origin git@gitServer_ip:/home/gitrepo/sample.git
$ git push -u origin master
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章