使用gitolite管理git許可權

2021-07-27 16:08:23 字數 2754 閱讀 6876

1、伺服器上新增專用管理賬戶git,並在伺服器上安裝git

2、建立本地機器的公私鑰

3、伺服器安裝gitolite

4、倉庫新增與管理

5、新增使用者並管理使用者許可權

6、修改管理員的公鑰

7、修復管理員的許可權

一、伺服器上安裝git略過

二、建立本地機器的公私鑰

ssh-keygen -f ~/.ssh/git-admin

然後將生成的 git-admin.pub 上傳到伺服器(下面暫時放在了 /tmp 目錄下),暫時不要將公鑰放在 ~/.ssh/authorized_keys 中,後面會有說明。

三、安裝gitolite

git clone

2、第1部會得到資料夾 gitolite,在該目錄的同級目錄中建立資料夾 bin,然後執行命令

./gitolite/install -ln

該命令會在bin下生成乙個連線檔案 gitolite(連線到gitolite/src/gitolite) 如下圖

本步驟完全可以沒有

3、進入到 bin 目錄下執行(git-admin.pub 是客戶端機器的公鑰)

gitolite setup -pk /tmp/git-admin.pub

執行結果如下

initialized empty git repository in /home/git/repositories/gitolite-admin.git/

initialized empty git repository in /home/git/repositories/testing.git/

就是在~/repositories/目錄生成兩個repository(倉庫):gitolite-admin.git和testing.git

gitolite-admin.git是使用者許可權管理的倉庫,testing.git 則是普通的倉庫

此命令還會在使用者目錄下生成檔案project.list,該檔案記錄了所有管理的倉庫(git-admin.git除外),以後每次新增或刪除倉庫,都會修改該檔案。

檢視檔案 ~/.ssh/authorized_keys 內容如下,主要是該檔案的內容配合指令碼實現了許可權管理,也可以不用gitolite,手動配置該檔案實現許可權管理,但是會很麻煩。

四、倉庫新增與管理

1、在 ~/.ssh/下建立檔案 config ,並寫入如下配置

host git-server

user git

hostname 114.x.x.x

port 22

identityfile ~/.ssh/git-admin (使用者認證的金鑰)

本步驟可以沒有

2、先將 gitolite-admin.git 倉庫轉殖到本地

git clone git-server:gitolite-admin.git (git-server 是在第 1 步配置的的)

進入到 gitolite-admin 中會有如下兩個目錄

conf/ 其中的檔案 gitolite.conf 用於管理倉庫和使用者許可權,例如下圖包含了兩個倉庫,如果需要新增倉庫,只需要按照格式新增,然後推到伺服器就可以了

keydir/ 該目錄存放了使用者的公鑰檔案,推到伺服器後 gitolite 會自動將其許可權新增到 ~/.ssh/authorized_keys 檔案中

五、gitolite 的許可權管理配置參照另一篇

六、修改管理員的公鑰

上面設定了 git 賬號,所以在這一步中一定要切換到 git 賬號才能操作,否則 gitolite 會把配置檔案寫到其他使用者的根目錄下(很尷尬,在這個坑里待了半天)。

gitolite setup -pk  new_admin.pub

七、修復管理員的許可權

當管理員的許可權被破壞後(比如不小心將 rw 許可權去掉了),可以登入到伺服器,切換到 git 賬號,執行下面的命令

git clone /home/git/repostorise/gitolite-admin.git 

(本例中的路徑與上面保持一致)

將管理倉庫轉殖下來,修改相應的檔案(conf/gitolite.conf),然後執行

gitolite push (也可能是 gitolite push -f)   將修改推送並應用許可權即可

參考了

Gitolite 部署GiT 倉庫

gitolite 提供了便於部署git遠端倉庫的工具,它本身並不提供服務,服務仍舊依託 ssh 對外提供。gitolite 增強了授權體系,和倉庫管理功能。在本地clone乙個gitolite admin的倉庫,直接在本地修改,再推送到遠端伺服器上即可生效。gitolite適合小團隊管理.usera...

在uos下使用gitolite搭建git伺服器

檢查基礎服務 檢查伺服器是否有sshd相關的程序資訊,git是否安裝,perl環境和perl模組perl data dumper是否安裝。一般伺服器上都安裝了這些基礎的服務。建立git使用者 在root許可權下 useradd m git 建立新的使用者git專門管理git伺服器 修改git使用者密...

基於Gitolite管理的Git伺服器搭建v1 0

客戶端 在此為方便測試,就不再另外建立使用者,直接使用客戶端root使用者即可生成金鑰對,注意,此處生成的金鑰隊需要和用於ssh鏈結的金鑰對區別開來。cd root ssh keygen f ssh oreki將生成的公鑰 my.pub 上傳到伺服器的以備用 scp ssh oreki.pub dr...