Linux系統,git服務器搭建

本文介紹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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章