Centos6.5基於gitosis的Git服務器的搭建

GitHub是一個免費託管開源代碼的Git服務器,如果我們不想公開項目的源代碼,又不想付費使用,那麼我們可以自己搭建一臺Git服務器。

1、安裝 openssh服務器與客戶端工具

  1. #  yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 

  2. #  wget https://www.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz

  3. #  tar zxvf git-2.7.4.tar.gz

  4. #  cd git-2.7.4

  5. #  make prefix=/usr/local/git all

  6. #  make prefix=/usr/local/git install

  7. #  ln -s /usr/local/git/bin/* /usr/bin/

  查看版本號:git --version
  git version 2.7.4

spacer.gif

2、Git服務器打開RSA認證

在Git服務器上首先需要將/etc/ssh/sshd_config中將RSA認證打開,即:

1.RSAAuthentication yes     

2.PubkeyAuthentication yes     

3.AuthorizedKeysFile  .ssh/authorized_keys


3、配置 git服務器

創建git服務器管理用戶

  1. $  adduser --system --shell /bin/sh --create-home --home-dir /home/git git  

  2.   設置git倉庫權限

  3. $  chown -R git:git /home/git

  4. $  chmod -R 755 /home/git 

初始化全局設置

  1. $  git config --global user.name "myname"   

  2. $  git config --global user.email "myname@server"  

創建個人公鑰和私鑰(用於後面的git服務的管理員管理)

       $  ssh-keygen -t rsa     

默認情況下,公鑰和私鑰會保存在~/.ssh目錄下,有這些文件:id_rsa  id_rsa.pub  known_hosts


4、切換到root,   獲取並安裝gitosis  

  1. #  yum install python-setuptools     

  2. #  cd /tmp/

  3. #  git clone git://github.com/res0nat0r/gitosis.git  

  4. #  cd gitosis   

  5. #  python setup.py install  

  6. 顯示Finished processing dependencies for gitosis==0.2即表示成功 


5、ssh設置

$  su git

$  mkdir ~/.ssh

$  touch ~/.ssh/authorized_keys

$  chmod 600 /home/git/.ssh/authorized_keys  

#如果有###文字,這個是gitosis生成的,不要去刪除。刪掉其他的sshkey就行了,不然會造成gitosis無法使用

收集所有公鑰存放在.ssh/authorized_keys文件中,然後再次clone或者push的時候,就不需要再輸入密碼了。

$ssh-keygen -t rsa

注意不能忘記私鑰的密碼。默認會生成~/.ssh/id_rsa.pub公鑰文件。

有了密鑰以後便可初始化gitosis,使gitosis獲得對Git的管理權限。


6、使用git用戶並初始化gitosis

  1. $  su - git

  2. $  gitosis-init < ~/.ssh/id_rsa.pub //將該公匙導入gitosis裏,這時本機已經有了爲git的管理權限了 

    這樣會在/home/git下面生成gitosis和repositories兩個目錄,後者即爲存放公共庫的目錄。

    1. 生成的gitosis-admin爲Git的用戶訪問權限管理庫,gitosis通過這個git庫來管理所有git庫的訪問權限。

    2. 通過執行初始化,該公鑰的擁有者就能修改用於配置gitosis的那個特殊Git倉庫了

  3. $  chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update  

    確保/home/git/repositories/gitosis-admin.git/hooks/post-update具有執行權限(755)。

7、配置服務器上的gitosis

  1. $ su - git   

  2. $ git clone git@localhost:repositories/gitosis-admin   //因爲是同一臺機器,所以可以用localhost

  3. $ cd gitosis-admin/  

  4. $ ls -al  

看到以下結果

spacer.gif1348568293_3418.jpg

gitosis.conf用來配置git項目和用戶,keydir存放用戶的公鑰,這裏的公鑰對命名有嚴格要求,要是 用戶名.pub,必須以.pub後綴結尾。


8、在成員機(ip=10.0.2.100)上生成自已的公匙,

$  sudo yum install openssh-server openssh-client  

$  ssh-keygen -t rsa 

$  scp ~/.ssh/id_rsa.pub [email protected]:gitosis-admin/keydir/qsh.pub //將本機的公匙copy到gitosis的keydir中  

   

9、再切換到git服務上(ip=10.0.2.8)

$  cd ~  

$  cd gitosis-admin  

$  cat keydir/tester.pub >> /home/git/.ssh/authorized_keys //將tester的公匙導入到git目錄的 authorized_keys文件中  

10、添加GIT項目:

  1. $ su - git 

  2. $ git clone git@hostname:repositories/gitosis-admin.git

  3. $ vi gitosis.conf  

  4. [gitosis]  

  5. [group gitosis-admin]  

  6. writable = gitosis-admin  

  7. members = [email protected]  

  8. #加一個組myteam  

  9. [group myteam]  

  10. members = qsh  #上面公匙文件名,#多個用戶用空格分開  

  11. writable = test_project #項目倉庫名  

提交到版本庫

  1. $ git add .  

  2. $ git commit -am "Allow tester write access to test_project"  

  3. $ git push origin master  

這時qsh便有權限操作test_project倉庫了,回到成員機(ip=10.0.2.100)上

  1. $ cd ~  

  2. $ mkdir test_project  

  3. $ cd test_project  

  4. $ echo "testing ">test.txt  

  5. git init --bare   //初始化本地版本  

  6. $ git remote add origin [email protected]:repositories/test_project.git //加到遠程版本庫中  

  7. $ git add .  

  8. $ git commit -a -m "哈哈哈,測試一下"   

  9. $ git push origin master  


換個目錄看能否clone回來

  1. $ cd /tmp  

  2. $ git clone [email protected]:repositories/test_project //此時應該不會提示輸入ssh密碼的  


最後大功告成...


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