ubuntu安裝gitolite搭建git服務(wù)器

本文講解在ubuntu上安裝gitolite,為客戶端提供git倉(cāng)庫(kù)服務(wù)器功能。ubuntu版本:server 16.04
by kowen

安裝準(zhǔn)備

  1. 安裝gitolite前,要安裝 git,openssh-server和 openssh-client
    sudo apt-get update
    sudo apt-get -y install git openssh-server openssh-client

  2. 準(zhǔn)備好你的ssh私鑰和公鑰
    沒(méi)有的話可在本地執(zhí)行ssh-keygen -t rsa -C "yourname@example.com 生成一個(gè)欲主,生成后在~/.ssh/目錄里,id_rsa是私鑰逝嚎,id_rsa.pub是公鑰,文件生成后可以改名扁瓢。

  3. 上傳公鑰
    將公鑰上傳到服務(wù)器備用,比如是/tmp/YourName.pub

添加git用戶

sudo adduser --system --shell /bin/sh --group --disabled-password --home /home/git git

  • 使用命令添加加上--system參數(shù)补君,用戶就不會(huì)在登陸界面顯示
  • home是git用戶主目錄引几,也是git倉(cāng)庫(kù)的存儲(chǔ)目錄,如果倉(cāng)庫(kù)比較大可以放在別的盤中,比如我的就是/data/git

安裝gitolite

  1. 登錄到git用戶
    sudo su - git
  2. 確保 ~/.ssh/authorized_keys 文件不存在或者為空
  3. 把公鑰拷貝到git主目錄下
    cp /tmp/YourName.pub $/Home/YourName.pub
  4. 下載并安裝gitolite
git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
  1. 初始化gitolite, 同時(shí)配置管理員
    gitolite setup -pk YourName.pub
    如果以上命令提示找不到伟桅,執(zhí)行下面的代替
    $HOME/bin/gitolite setup -pk YourName.pub

克隆管理庫(kù)到本地

不要直接在服務(wù)器上創(chuàng)建和管理倉(cāng)庫(kù)敞掘,倉(cāng)庫(kù)管理是通過(guò)叫g(shù)itolite-admin的倉(cāng)庫(kù)進(jìn)行的,這個(gè)倉(cāng)庫(kù)在初始化gitolite時(shí)就已經(jīng)生成了楣铁,管理員可以克隆到本地進(jìn)行配置玖雁,在客戶端執(zhí)行

git clone git@服務(wù)器地址/gitolite-admin.git

如果提示輸入密碼,編輯客戶端的~/.ssh/config文件盖腕,添加以下內(nèi)容:

Host 服務(wù)器地址
    HostName 服務(wù)器地址
    User git
    Port 22
    IdentityFile /home/用戶名/.ssh/私鑰文件名

添加用戶和倉(cāng)庫(kù)

gitolite-admin里面兩個(gè)文件夾keydir和conf:

  1. keydir存儲(chǔ)用戶的公鑰赫冬,添加用戶可以直接拷貝用戶的公鑰到此文件夾;
  2. conf目錄里的gitolite.conf是配置文件溃列,格式如下:
repogitolite-admin
    RW+     =   id_rsa
repo    testing
        RW+     =   @all

比如要添加一個(gè)倉(cāng)庫(kù)‘foo',并給alice劲厌,bob和carol不同的權(quán)限,首先把他們的公鑰(alice.pub,bob.pub,carol.pub)拷貝到keydir听隐;然后編輯conf/gitolite.conf添加:

repo foo
    RW+         =   alice
    RW          =   bob
    R           =   carol

最后把修改push到服務(wù)器:

git add conf
git add keydir
git commit -m "added foo, gave access to alice, bob, carol"
git push

服務(wù)器會(huì)自動(dòng)添加用戶到~/.ssh/authorized_keys补鼻,并且添加一個(gè)新的空倉(cāng)庫(kù)'foo'。

上述操作完成后雅任,alice辽幌、bob和carol就可以將倉(cāng)庫(kù)克隆到本地:
git clone git@服務(wù)器地址:foo

查看對(duì)倉(cāng)庫(kù)的操作權(quán)限,可以在客戶端執(zhí)行
ssh git@服務(wù)器地址 info

訪問(wèn)規(guī)則示例

gitolite的訪問(wèn)規(guī)則功能強(qiáng)大椿访,以下是示例:

repo foo
    RW+                     =   alice
    -   master              =   bob
    -   refs/tags/v[0-9]    =   bob
    RW                      =   bob
    RW  refs/tags/v[0-9]    =   carol
    R                       =   dave

規(guī)則解釋:

  • alice對(duì)所有branch和tag擁有所有權(quán)限--create, push, delete, rewind/overwrite等等
  • bob可以創(chuàng)建或者fast-forward push名字中不以’master‘開頭的branch,可以創(chuàng)建不以v+數(shù)字開頭的tag
  • carol只可以創(chuàng)建v+數(shù)字開頭的tag
  • dave只有只讀權(quán)限虑润,可以clone/fetch成玫。

管理組

某些時(shí)候使用組來(lái)管理用戶是非常方便的,下面是兩個(gè)組:

@staff      =   alice bob carol
@interns    =   ashok
repo secret
    RW      =   @staff
repo foss
    RW+     =   @staff
    RW      =   @interns

組成員可以累加拳喻,下面對(duì)@staff的定義和上面的效果是一樣的:

@staff      =   alice bob
@staff      =   carol

組也可以包含其他組:

@all-devs   =   @staff @interns

@all是一個(gè)特殊組名稱哭当,既可以指所有的倉(cāng)庫(kù),可以指所有的用戶冗澈。

常用命令

客戶端可以通過(guò)ssh遠(yuǎn)程執(zhí)行一些命令钦勘,以下命令可以查看幫助:
ssh git@host help
info是最長(zhǎng)用到的命令,在命令后跟上'-h'可以查看命令的用法亚亲。

在服務(wù)器端有非常豐富的使用命令彻采,運(yùn)行gitolite help查看詳細(xì)信息。

參考資料

https://github.com/sitaramc/gitolite

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捌归,一起剝皮案震驚了整個(gè)濱河市肛响,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惜索,老刑警劉巖特笋,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異巾兆,居然都是意外死亡猎物,警方通過(guò)查閱死者的電腦和手機(jī)虎囚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蔫磨,“玉大人淘讥,你說(shuō)我怎么就攤上這事≈仕В” “怎么了适揉?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)煤惩。 經(jīng)常有香客問(wèn)我嫉嘀,道長(zhǎng),這世上最難降的妖魔是什么魄揉? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任剪侮,我火速辦了婚禮,結(jié)果婚禮上洛退,老公的妹妹穿的比我還像新娘瓣俯。我一直安慰自己,他們只是感情好兵怯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布彩匕。 她就那樣靜靜地躺著,像睡著了一般媒区。 火紅的嫁衣襯著肌膚如雪驼仪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天袜漩,我揣著相機(jī)與錄音绪爸,去河邊找鬼。 笑死宙攻,一個(gè)胖子當(dāng)著我的面吹牛奠货,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播座掘,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼递惋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了雹顺?” 一聲冷哼從身側(cè)響起丹墨,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嬉愧,沒(méi)想到半個(gè)月后贩挣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年王财,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卵迂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绒净,死狀恐怖见咒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挂疆,我是刑警寧澤改览,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站缤言,受9級(jí)特大地震影響宝当,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胆萧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一庆揩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跌穗,春花似錦订晌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至羹唠,卻和暖如春推励,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肉迫。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留稿黄,地道東北人喊衫。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像杆怕,于是被迫代替她去往敵國(guó)和親族购。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • gitosis: 把所有用戶的公鑰保存在 authorized_keys 文件的做法陵珍,只能湊和一陣子寝杖,當(dāng)用戶數(shù)量達(dá)...
    曉蜻蜓閱讀 5,777評(píng)論 2 2
  • 最近看到git的介紹,剛好自己又想在公司電腦和家里電腦之間同步一些文件互纯,于是便開始學(xué)習(xí)git了瑟幕。 不過(guò)要想實(shí)現(xiàn)多臺(tái)...
    黑風(fēng)齋閱讀 8,152評(píng)論 1 3
  • 最近公司項(xiàng)目需要用到Git來(lái)管理項(xiàng)目,正好逢周末花了點(diǎn)時(shí)間在虛擬機(jī)的unbuntu系統(tǒng)中搭建了下git的服務(wù)器,由...
    SnowDragonYY閱讀 468評(píng)論 1 0
  • 本文介紹如何在 mac 機(jī)器上創(chuàng)建 Git 服務(wù)器只盹,總體思路是:使用gitosis來(lái)簡(jiǎn)化創(chuàng)建過(guò)程辣往,在用作服務(wù)器的機(jī)...
    JackWongHD閱讀 12,190評(píng)論 2 14
  • 一.部署環(huán)境 系統(tǒng):CentOS 6.4x64 最小化安裝 IP:192.168.52.131 git默認(rèn)使用SS...
    madfrog_hc閱讀 1,348評(píng)論 0 0