分别在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