使用linux安裝gitolite管理git

来源:https://www.cnblogs.com/coder-wdq/archive/2018/08/14/9375162.html
-Advertisement-
Play Games

系統:centos7 伺服器:阿裡雲 一、前期準備 1.安裝git 2.安裝perl 3.安裝openssh 4.安裝cpan(如果你的linux裡面沒有,就必須安裝) 5.準備兩個用戶(這兩個用戶可以是自定義的,並且他們相互之間沒有讀取對方目錄的許可權,不然會繞過gitolite,在執行update ...


系統: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,

會造成鉤子觸發失敗的操作,從而導致推送失敗。

 

 

 

 

 

 

 




 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • /// /// 判斷經緯度是否在範圍類 /// /// 經度 /// 緯度 /// /// public static bool IsInRegion(double longitudeCur, double latitudeCur, IList pathList... ...
  • 本人也是英文盲,翻譯不對的地方請諒解。由於翻譯內容較多,會慢慢更新 orleans簡稱ol,一些專用詞不做翻譯。先決條件,讀這表文章之前需要瞭解:actor,es,cqrs 參考鏈接: https://www.cnblogs.com/netfocus/p/4150084.html http://ww ...
  • 分享翻譯一篇 "Abp" 框架作者(Halil İbrahim Kalkan)關於ASP.NET Core依賴註入的博文. 在本文中,我將分享我在ASP.NET Core應用程式中使用依賴註入的經驗和建議. 這些原則背後的目的是: 1. 有效地設計服務及其依賴關係 2. 防止多線程問題 3. 防止內 ...
  • 從小到大的選擇排序 是從一個數組中依次選出 最小數值 輸出,第二小的數值輸出,第三小的數值輸出... ...直到最後一個數組中最後一個數遍歷完成,則 整個排序輸出完成。 ...
  • 公司項目修改(員工工作失誤記錄操作系統) 前言 之前培訓過Java,感受就是會的不用學,不會的學了沒用,教的都是最基礎的,自己通過普通渠道都能學到。培訓的機構也坑,提供宿舍的房租永遠是最積極收的,提供面試的機會永遠是最拖拉的。不負眾望,它也終於要涼涼了。有幸面試了一家非IT公司的IT崗位,但用的是C ...
  • 可以對整個項目進行全局監控。 新建一個MVC4項目,可以在global.asax文件中看到如下代碼: FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 表示註冊全局過濾器. GlobalFilters是全局過濾器的集合,可以通過ad ...
  • [TOC] 背景敘述 在傳統的基於 框架下進行的 MEF 開發,大多是使用 MEF 1 ,對應的命名空間是 System.ComponentModel.Composition 。在 中,微軟為了偉大的跨平臺策略,引入了 MEF 2 ,其對應的命名空間是 System.Composition ,這個需 ...
  • 一、介紹 由於CPU從記憶體中讀取數據的速度比從磁碟讀取快幾個數量級,並且存在記憶體中,減小了資料庫訪問的壓力,所以緩存幾乎每個項目都會用到。一般常用的有MemoryCache、Redis。MemoryCache將存入的對象都作為Object對象存儲,Redis分為四種類型存儲,在微軟提供的緩存組件中也 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...