本文介紹git服務器搭建,不介紹客戶端git創建及文本提交,客戶端git使用、ssh密鑰生成可參考末尾相關鏈接
運行環境
服務器:Linux ,客戶端windows
IP:10.34.10.122 username:root,secret:password
1. 第一步,安裝git
yum install git
2. 第二步,創建一個git用戶,用來運行git服務
cd home
adduser git
若要設置密碼,則:passwd git,輸入密碼即可,我的密碼是:abcd1234,可根據喜好設定
清除密碼命令:passwd -d git
3. 第三步,創建登錄證書
ssh可同時支持publickey和password兩種授權方式,publickey默認不開啓。如果客戶端不存在.ssh/id_rsa,則使用password授權,存在則使用publickey授權,如果publickey授權失敗,依然會繼續使用password授權。我們使用的是publickey授權方式,下面進行相關配置。
(1)收集所有需要登錄用戶的公鑰,也就是id_rsa.pub文件,把所有公鑰導入到/home/git/.ssh/authorized_keys文件中,一行一個,如果沒有.ssh目錄,則創建目錄。
mkdir .ssh
修改.ssh目錄權限,權限必須爲700
chmod 700 .ssh
chown -R git:git .ssh
公鑰文件id_rsa.pub 上傳至.ssh目錄,執行命令,將公鑰拷貝至authorized_keys文件。
cat id_rsa.pub >> authorized_keys
查看拷貝是否成功,不成功,重新拷貝。
cat authorized_keys
修改authorized_keys權限,權限必須爲644
chmod 644 authorized_keys
(2) sshd相關配置,不可省略,編輯ssh服務配置文件,所在位置爲/etc/ssh/sshd_config
RSAAuthentication yes #開啓RSA認證功能
PubkeyAuthentication yes #開啓公匙認證
StricModes no #據說不改會強制要求登錄用戶和文件擁有者用戶相同
(3)sshd_config生效,重啓sshd服務即可
service sshd restart
(4)如果要遠程連接ssh ,需要把22端口的防火牆關閉,相關命令如下:
1) 重啓後生效
開啓:chkconfig iptables on
關閉:chkconfig iptables off
2) 即時生效,重啓後失效
開啓:service iptables start
關閉:service iptables stop
4. 第四步,初始化git倉庫
makir /home/git/repo #新建repo目錄
cd /home/git/repo #切換到repo目錄
git init --bare project.git #初始化倉庫
chown -R git:git project.git #修改權限,project.git所在用戶和組設爲git
5. 第五步,禁用shell
出於安全考慮,第二步創建git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成,找到類似下面的一行
git:x:1000:1000::/home/git:/bin/bash
改爲
git:x:1000:1000::/home/git:/usr/bin/git-shell
這樣git用戶可以正常通過ssh使用git,但無法登錄shell,因爲我們爲git用戶指定的git-shell每次一登錄就自動退出。而push到服務器的文件,用戶無法看到。
6. 第六步,克隆遠程倉庫
git clone [email protected]:/home/git/repo/project.git (其中,10.34.10.122爲hostname)
若克隆成功,會有類似下面的結果:
Cloning into 'project' ...
remote: Counting object : 8 , done.
remote: Compressing objects : 100% (5/5) , done.
remote: Total 8 (delta 0) ,reused 0 (delta 0)
Receiving objects:100% (8/8), done.
Checking connectivity ... done.
參考鏈接
(1)廖雪峯官方網站,git教程
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000
(2)Git項目管理——部署Git服務器
http://segmentfault.com/a/1190000000482168
(3)http://git-scm.com/
出現問題
問題1:Git error:“Please make sure you have the correct access rights and the repository exists”
解決問題鏈接:
http://stackoverflow.com/questions/25927914/git-error-please-make-sure-you-have-the-correct-access-rights-and-the-reposito
問題2:SSH關於公鑰認證Permission denied(publickey,gssapi-with-mic的問題
SSH對公鑰、私鑰的權限和所有權的要求是非常嚴格的,總結如下:
1、下面兩個目錄的所有權必須是git,所屬組也應該是git,權限必須爲700
\home\git
\home\git\.ssh
2、下面公鑰文件的所有權必須是git,所屬組也應該是git,權限必須爲644
\home\git\.ssh\authorized_keys
3、下面私鑰文件的所有權必須是git,所屬組也應該是git,權限必須是600,但我們的私鑰在不需要上傳至服務器,因此,忽略這一步
\home\git\.ssh\id_rsa