使用linux安裝gitolite管理git

系統:centos7linux

服務器:阿里雲git

1、前期準備github

1.安裝git算法

yum install git

 

2.安裝perl vim

yum install perl

 

3.安裝openssh windows

yum install openssh 

 

4.安裝cpan(若是你的linux裏面沒有,就必須安裝)centos

yum install cpan

 

5.準備兩個用戶(這兩個用戶能夠是自定義的,而且他們相互之間沒有讀取對方目錄的權限,否則會繞過gitolite,在執行update的hook的時候報環境變量的錯誤),這裏爲了好區分就用gitgitadmin服務器

useradd git

 

passwd git

 

useradd gitadmin

 

passwd gitadmin

 

這兩個命令的做用分別是添加用戶和爲改用戶設置密碼ssh

2、配置步驟post

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和管理員已經設置完成了

3、添加用戶和推送配置

gitolite的全部添加倉庫和用戶還有設置權限都要經過gitadmin來推送,配置才能生效。

1.如今切換回gitadmin用戶

su gitadmin

 

而後回到gitadmin的用戶目錄,爲了是把等下克隆的gitolite的管理倉庫,直接放在用戶目錄下便於查找

cd

 

2.克隆在gitolite管理配置

git clone git@127.0.0.1:gitolite-admin這個地址格式要注意規範,地址寫127.0.0.1是由於在同一臺服務器,若是想用其餘服務器能夠更換地址。

特別要注意的是不能寫成git clone git@127.0.0.1:/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生成對應公鑰。

3、使用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,

會形成鉤子觸發失敗的操做,從而致使推送失敗。

相關文章
相關標籤/搜索