天天看點

ubuntu/centos上搭建git伺服器

分别在ubuntu和centos7上試過了。

安裝配置gitolite

git伺服器賬号:git

git管理者賬号:work

1.伺服器的root賬号下git安裝,openssh

省略

2. 伺服器上新增git賬号

3. gitolite服務端的安裝(git賬号)

1) gitosis已經不維護了,改用gitolite

2) git賬号下,在~/目錄下建立bin目錄

3) 下載下傳安裝,并将安裝目錄加入目前環境變量中,這樣在執行gitolite時不用指定路徑:

~$ git clone git://github.com/sitaramc/gitolite
~$ gitolite/install -to /home/git/bin
export PATH=/home/git/bin:$PATH
echo $PATH
           

4. gitolite的管理者使用者建立,生成密鑰對(work賬号)

1) 在本機上再建立一個work賬号,作為git的管理者賬号

2) 切換到work下生成密鑰對

a. 檢視~/是否有.ssh目錄,如果有的話将裡邊的内容删除,如果沒有建立目錄.ssh

b. 生成密鑰對,密鑰檔案名為my_idrsa

~$ ssh-keygen -f .ssh/my_idrsa
           

c. 檢視密鑰檔案

~$ ls .ssh
           

d. 啟動ssh-agent,如果成功,ps aux | grep ssh-agent能看到

ssh-agent bash
           

e. 将本地的私鑰加入ssh環境中,如果成功會提示Identity added: … …

ssh-add .ssh/my_idrsa
           

3) 設定目錄和檔案通路權限

chmod 700 .ssh
chmod 600 .ssh/gitadmin
           

5. gitolite服務端的配置(要用到剛才管理者賬号生成的公鑰)

a. 切換到git賬号登入

su - git(根據提示輸入密碼)
           

b. 将上一步生成的公鑰my_idrsa.pub拷貝到~/下面,如果管理者在其他機器上,用rz上傳或者scp來拷貝;這裡: 

~$ sudo cp /home/work/.ssh/my_idrsa.pub ./
           

如果提示:git is not in the sudoers file.  This incident will be reported.

則可以切換到root使用者登入來做cp操作,或者修改/etc/sudoers檔案把git賬号加入其中。

c. 設定公鑰,如果~/.ssh已經存在且不為空,先清空,若不存在.ssh,會自動建立

~$ gitolite setup -pk my_idrsa.pub(假設$PATH中已經包含了/home/git/bin)
           

這個時候,如果之前已經試着建立過信任關系,會提示:

WARNING: keydir/my_idrsa.pub duplicates a non-gitolite key, sshd will ignore it

這個告警資訊對gitolite沒有影響,如果不想要出現這個warning,也可以在設定公鑰之前,把authorized_keys檔案裡work賬号的公鑰删掉。

d. 删除~/目錄下的my_idrsa.pub

rm -f my_idrsa.pub
           

e. 修改ssh目錄和檔案通路權限

chmod 700 .ssh
chmod 600 .ssh/authorized_keys
           

6. gitolite管理者的配置(work賬号)

a. 配置管理者通路服務端的别名

~$ vi .ssh/config(如果這個檔案不存在就建立)
host git  #給服務端設定的别名
        user git   #服務端的使用者名
        hostname localhost  #這裡管理者與服務端在同一台機器上
        port 22
          identityfile ~/.ssh/my_idrsa  #管理者登陸服務端使用的密鑰
           

b. 設定config的通路權限

chmod 600 .ssh/config
           

c. clone伺服器上的倉庫gitolite-admin到管理者賬号下,同時驗證别名配置是否生效

~$ mkdir tmp
~$ cd tmp
~/tmp$ git clone git:gitolite-admin
           

注意:此處成功clone的前提是信任關系建立成功且别名設定成功

如果報錯:

Bad owner or permissions on /home/work/.ssh/config

fatal: Could not read from remote repository.

則執行:

chmod 700 /home/work/.ssh
chmod 600 /home/work/.ssh/config
           

繼續閱讀