1. 程式人生 > >使用linux安裝gitolite管理git

使用linux安裝gitolite管理git

tmp roo 繞過 ont bsp 兩種方法 配置 oot pen

系統: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的時候報環境變量的錯誤),這裏為了好區分就用gitgitadmin

useradd git

passwd
git

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