本次環境:
- 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