使用linux安裝gitolite管理git
系統:centos7
服務器:阿裏雲
一、前期準備
1.安裝git
yum install git
2.安裝perl
yum install perl
3.安裝openssh
yum install openssh
4.安裝cpan(如果你的linux裏面沒有,就必須安裝)
yum install cpan
5.準備兩個用戶(這兩個用戶可以是自定義的,並且他們相互之間沒有讀取對方目錄的權限,不然會繞過gitolite,在執行update的hook的時候報環境變量的錯誤),這裏為了好區分就用git和gitadmin。
useradd git
passwdgit
useradd gitadmin
passwd gitadmin
這兩個命令的作用分別是添加用戶和為改用戶設置密碼
二、配置步驟
1.首先切換到gitadmin登錄
su gitadmin
2.在gitadmin這個用戶下生成公鑰和秘鑰
ssh-keygen
執行該命令後,公鑰和密碼會默認為rsa算法,並且保存在該用戶的.ssh目錄下,也就是/home/git/.ssh/id_rsa。
如果想查看生成的公鑰和秘鑰可以執行cd /home/git/.ssh/,id_rsa就是秘鑰,id_rsa.pub就是公鑰
3.把gitadmin的公鑰復制出來
cp id_rsa.pub tmp/gitadmin.pub
這裏復制的目的是為了等下切換git用戶可以設置該公鑰為具有管理git倉庫權限的公鑰,所以這裏就直接放在tmp目錄下了。
官方規範,把公鑰的名字設為用戶的名字,以便區分。
4.這裏切換git用戶
su git
這裏的git用戶主要是用來放git倉庫和設置管理員的權限的。
確保~/.ssh/authorized_keys
是空的或不存在的,authorized_keys是用來存儲所有使用gitolite的用戶的公鑰的
5.切換到該用戶的用戶目錄並安裝gitolite
cd
git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
然後設置git的管理員,也就是我們的gitadmin
$HOME/bin/gitolite setup -pk /tmp/gitadmin.pub
到這裏gitolite和管理員已經設置完成了
三、添加用戶和推送配置
gitolite的所有添加倉庫和用戶還有設置權限都要通過gitadmin來推送,配置才能生效。
1.現在切換回gitadmin用戶
su gitadmin
然後回到gitadmin的用戶目錄,為了是把等下克隆的gitolite的管理倉庫,直接放在用戶目錄下便於查找
cd
2.克隆在gitolite管理配置
git clone [email protected]:gitolite-admin這個地址格式要註意規範,地址寫127.0.0.1是因為在同一臺服務器,如果想用其他服務器可以更換地址。
特別要註意的是不能寫成
git clone [email protected]:/home/git/repostories/gitolite-admin,這樣的寫法也能克隆到項目,但是並不是通過gitolite來觸發的。
繞過gitolite的後果會導致後面推送的時候觸發update.pm這個hook報環境變量錯誤。如果沒有成功地使用gitolite來克隆項目,是會提示你要輸入這個賬號的密碼。
當出現密碼提示的時候,請返回查看之前的操作步驟有沒有遺漏,否則,後面的很多操作都無法實現。
因為我們前面已經為gitadmin配置了管理權限的公鑰,理論是可以直接克隆成功的。
3.打開gitolite-admin
cd gitolite-admin
會看到有conf和keydir兩個文件夾
conf用來添加或刪除倉庫,還有配置用戶的分組還有每個用戶/分組的讀寫執行權限,查看權限操作可以直接往後拉。
keydir用來保存每個使用gitolite的用戶的公鑰,推送成功後,會在git用戶的authorized_keys生成對應公鑰。
三、使用gitolite的來管理用戶的權限
1.打開另一臺客戶端(我本機使用的是windows系統)
直接輸入
ssh-keygen
大回車連續啪啪啪三次,就會在你C盤用戶目錄的.ssh文件夾下面生成一對公鑰秘鑰
2.把公鑰移到服務器端gitadmin用戶的keydir目錄中。
這裏有兩種方法可以用:
1)下一個winSCP,直接把文件拖過去。記得改一下名字,如:waldon.pub
2)直接在客戶端使用命令
scp C://Users/waldon/.ssh/id_rsa.pub gitadmin@host:/home/gitadmin/gitolite-admin/keydir/waldon.pub
這裏host是你服務器的ip地址,waldon是我本機的用戶名。
提示輸入gitamdin的密碼後,就會看到上傳公鑰到服務器成功了。
3.我們再切回root用戶,創建一個新用戶叫waldon。這個用戶名要和你公鑰的名字一致
su root
useradd waldon
passwd waldon
4.切換回gitadmin,打開conf文件夾,編輯gitolite.conf文件
su gitadmin
cd /home/gitadmin/gitolite-admin/conf
vim gitolite.conf
5.為用戶配置權限
在gitolite-admin倉庫下添加剛剛配置的用戶waldon
repo gitolite-admin
RW+ = gitadmin waldon
按esc然後:wq保存退出
6.推送配置到git服務器
1)cd /home/gitadmin/gitolite-admin 回到gitolite-admin文件夾下
2)git status 查看當前倉庫的變化,這裏應該會顯示keydir/waldon.pub 和 conf/gitolite.conf 兩個變更文件
3)git add . 添加所有變動
4)git commit -m "這裏的提交註釋隨便填" 提交所有變動
5)git push 推送配置,如果不想看到出現的警告,也可以用git push -u origin master 來具體到推送分支
如果對這裏的命令不熟悉可以去看看git的相關命令,如果出現要你配置郵箱和用戶名的提示,按他提示的格式輸入即可。
7.切換回git用戶,查看配置是否成功。
su git
cd /home/git/.ssh
cat authorized_keys
當秘鑰出現新的用戶,就代表新增用戶成功了。
最後是一些簡單的倉庫權限配置,gitolite大部分的權限配置只是針對推送的。git的原意就是開源,分享代碼,gitolite的出現已經很變態了,如果還想控制其他人讀取代碼目錄的
權限,那還是用SVN吧。
所有的一切操作,除了切換用戶,都是不需要密碼的,因為秘鑰會自動匹配,如果出現了需要密碼的操作,有可能是你繞過了gitolite,
會造成鉤子觸發失敗的操作,從而導致推送失敗。
使用linux安裝gitolite管理git