1. 程式人生 > >使用Gitosis搭建Git伺服器

使用Gitosis搭建Git伺服器

         硬體需求:Ubuntu電腦(或虛擬機器),正常網路訪問。

         軟體需求:git-core,gitosis, openssh-server, git-daemon-run(ubuntu),msysgit(windows)

Step1. 安裝配置Git伺服器(IP:10.203.138.101)

         安裝Git和openssh。

         $ sudo apt-get install git-core openssh-server

新建使用者git,該使用者作為所有程式碼倉庫和使用者許可權的管理者。

         $ sudo groupadd git

         $ sudo useradd git –g git –m

         $ sudo passwd git (需要設定使用者git的密碼)

Step2. 安裝gitosis

         初始化伺服器的全域性設定,為安裝gitosis做準備。在任何一臺機器上使用git,第一次必須要先設定user.name和user.email。

         $ git config --global user.name “david”

         $ git config --global user.email “[email protected](name和email隨意)

         安裝一下python的setup tool。

         $ sudo apt-get install python-setuptools

         獲取gitosis包。

         $ git clone https://github.com/res0nat0r/gitosis.git(或者到網上下載對應的gitosis)

         $ cd gitosis

         $ sudo python setup.py install

Step3. 配置gitosis

         在git管理員的PC上,先安裝msysgit(windows系統),安裝後,開啟gitbash,執行如下命令生成管理員金鑰:

         $ ssh-keygen –t rsa

執行以上命令後,可以預設提示直接回車。回車後在當前使用者目錄下生成了.ssh/id_rsa和.ssh/id_rsa.pub。其中.ssh/id_rsa是私玥,.ssh/id_rsa.pub是公鑰。接下來可以使用如下命令將git管理員的公鑰上傳到git伺服器,也可以直接拷貝到git伺服器。

         $ scp xxx/.ssh/id_rsa.pub [email protected]:/tmp/id_rsa.pub

回到Git伺服器上。

         $ sudo chmod a+r /tmp/id_rsa.pub

讓gitosis執行起來:

         $ sudo –H –u git gitosis-init </tmp/id_rsa.pub

Initialized empty Git repository in /home/repo/gitosis-admin.git/

Reinitialized existing Git repository in /home/repo/gitosis-admin.git/

Gitosis是通過一個git倉庫來管理配置檔案,倉庫放在/home/git/repositories/gitosis-admin.git。

         設定git倉庫許可權

         $ sudo chown git:git /home/git/repositories

         $ sudo chmod 755 /home/git/repositories

         $ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

Step4. 在伺服器上新建測試專案倉庫

         在伺服器上新建一個空的專案倉庫可,叫“test”。

         切換到git使用者:

         $ su – git

         $ cd repositories

         $ git init --bare test.git

         $ exit

到這裡,test只是一個空倉庫,它是不能clone下來的。為了能做clone,必須先讓管理員或有許可權的人放一個初始化的版本到倉庫中。所以,我們必須先修改一個gitosis-admin。

Step5. 管理gitosis的配置檔案

         Gitosis本身的配置也是通過git來實現的。在剛剛上傳公鑰(伺服器端gitosis-init時使用了該公鑰)的機器上,把gitosis-admin.git這個倉庫clone下來,就可以以管理員的身份修改配置了。

         新建一個資料夾,如git101:

         $ mkdir git101

         $ cd git101

         $ git clone [email protected]:gitosis-admin.git(或使用全路徑)

         注:訪問git使用者倉庫的預設路徑是/home/git/repositories/

         $ cd gitosis-admin

該目錄下的keydir目錄是用來存放所有需要訪問git伺服器的使用者的ssh公鑰。各個使用者按照前面提到的辦法生成各自的ssh公鑰檔案後,把所有人的ssh公鑰檔案按名字重新命名一下,然後拷貝到keydir目錄下,然後修改gitosis.conf檔案,做相應的配置:

         [gitosis]

         [group gitosis-admin]

         writable = gitosis-admin

         members = [email protected]  [email protected]

         [group team]

         writable = test

         members = [email protected]  [email protected]  [email protected]

這個配置檔案表達瞭如下含有:gitosis-admin組成員有david,tom,該組對gitosis-admin倉庫有讀寫許可權;test組有david,tom,pitter三個成員,該組對test倉庫有讀寫許可權。目前這些配置檔案的修改只是在本地,必須推送到遠端的git伺服器上才能真正生效。

         加入新檔案、提交併push到Git伺服器:

         $ git add .

         $ git commit –m “add test and someusers”

         $ git push origin master

Step6. 初始化測試專案

         現在伺服器搭建完畢,並且有一個空的專案test在伺服器上。接下來,需要測試一下,空倉庫是不能clone的,所以需要某個有寫許可權的人初始化一個版本。在客戶端執行:

         $ mkdir test-ori

         $ cd test-ori

         $ git init (在客戶端執行,初始化一個本地的版本庫)

         $ echo “/* add something */” > hello.c

         $ git add .

         $ git commit –m “initial version”

         $ git remote add origin [email protected]:test.git

         $ git push origin master

到此為止,test已經有了一個版本了,team的其他成員只要先clone一下test倉庫就可以了,而且gitosis.conf中賦予的讀寫許可權。

Step7. 新增已有git專案

         如果想將一個現成的git倉庫,放到Git伺服器上供team使用(比如clone了一個官方的kernel倉庫,想在內部使用它作為基礎倉庫),可以這樣操作:

         首先需要從你的工作倉庫中得到一個純倉庫,比如你的工作目錄為~/kernel,你想將該純倉庫拷貝到Git伺服器上使用。Git伺服器的管理員拿到這個純倉庫(~/kernel)後,將其拷貝到/home/repo/下,同時配置gitosis相關配置檔案。比如說:下載ALSA庫。

         $ git clone git://android.git.kernel.org/platform/external/alsa-lib.git

         $ git clone git://android.git.kernel.org/platform/external/alsa-utils.git

生成bare庫:

         $ git clone --bare alsa-lib alsa-lib.git

         $ git clone --bare alsa-utils alsa-utils.git

將bare庫移動到Git伺服器目錄:

         $ cp alsa-lib.git /home/repo

         注意變更所有者,以獲取提交許可權。

         $ chown -R git alsa-lib.git

Step8. 安裝git-daemon

         如果想使用git協議,那麼就需要安裝git-daemon,它是git的一個守護程序(作為一個服務存在)。

         $ sudo apt-get install git-daemon-run

編輯git-daemon配置檔案:

         $ sudo gedit /etc/sv/git-daemon/run

         #!/bin/bash

         exec2>&1

         echo‘git-daemon starting.’

         execchpst -ugitdaemon

                   “$(git--exec-path)”/git-daemon --verbose --export-all--enable=receive-pack --enable=upload-pack --enable=upload-archive --reuseaddr --base-path=/home/webgod/      

         說明:

         --base-path      指向Git伺服器的根目錄

         --enable=receive-pack

         --enable=upload-pack

         --enable=upload-archive

         以上三個是與git-clone,git-push,git-pull相關的。檢視詳情使用命令:$ man git-daemon檢視。

         重啟git伺服器:

         $ sudo sv restart git-daemon

         在Git伺服器上:

         $ cd /home/webgod

         $ mkdir RepoServer

         $ cd RepoServer

         $ git init --bare manifest.git

切換到其他目錄:

         $ cd ~/test

         $ git clone git://127.0.0.1/RepoServer/manifest.git

($ git clone [email protected]:/home/webgod/RepoServer/manifest.git)

         這裡就實現了所謂的“匿名訪問”。

[說明]:

1. 如果其它新加入的成員無法clone一個git倉庫時,如出現如下錯誤提示:

ERROR: gitosis.serve.main:Repositoryread access denied 

原因是當前成員的key命名與在gitosis.conf中的members中的名字不一致!例如所用的key名是 lxq_rsa.pub,而在gitosis.conf中某一group下所用的名稱為 [email protected]

則只需要把lxq_rsa.pub重新命名為[email protected]並重新push到伺服器上即可!

2. 在克隆倉庫時如果出現如下錯誤提示:

fatal: ‘~/gitosis-admin.git’ does not appear to be a gitrepositories

fatal: The remote end hung up unexpectedly

試用 $ git clone [email protected]:/home/git/repositories/gitosis-admin.git

3.使用公鑰認證的方式登入。具體操作過程如下:

1) 在伺服器端(server)建立一個賬號(公共),例如anonymous;

2) 管理員收集需要訪問git服務的使用者公鑰,如user1.pub、user2.pub;

3) 使用ssh-copy-id命令將各個git使用者的公鑰遠端加入伺服器(server)的公鑰認證列表。

遠端操作,可以使用ssh-copy-id命令:

$ ssh-copy-id -I user1.pub [email protected]

$ ssh-copy-id -I user2.pub [email protected]

如果直接在服務區上操作,則直接將檔案追加到authorized_keys檔案中:

$ cat /path/to/user1.pub>> ~anonymous/.ssh/authorized_keys

$ cat/path/to/user2.pub >> ~anonymous/.ssh/authorized_keys

相關推薦

使用Gitosis搭建Git伺服器

         硬體需求:Ubuntu電腦(或虛擬機器),正常網路訪問。          軟體需求:git-core,gitosis, openssh-server, git-daemon-run(ubuntu),msysgit(windows) Step1. 安裝配置

Ubuntu下使用gitosis搭建Git伺服器,並且安裝GitWeb

# 什麼是Gitosis? > ​ Gitosis是一套用來管理authorized_keys檔案和實現簡單連線限制的指令碼。 > > ​ 而且Gitosis管理使用者許可權並不是通過網頁或者某個程式,而是通過一個特殊的Git倉庫來管理。你只需要在這個非常“特殊”的倉庫配置好使用者和許可權,然

搭建git伺服器及配置gitosis管理使用者許可權

[[email protected] ~]# sudo -H -u git gitosis-init < /tmp/id_rsa.pub  Traceback (most recent call last):   File "/usr/local/bin/gitosis-init", lin

在CentOS6.2下搭建git伺服器gitosis

1.安裝git先檢查git 是否已經安裝 [[email protected] ~]# rpm -q git          如果沒有安裝則進行安裝      [[email protected] ~]# yum install git 

linux 使用gitblit搭建git伺服器

linux使用gitblit搭建git伺服器 安裝的過程不是很複雜,首先在官網下載gitblit的安裝包,下載版本為gitblit-1.8.0。 解壓檔案到當前路徑 tar -zxvf gitblit-1.8.0.tar.gz 配置在data下的defaults

自定義Git ~ 忽略特殊檔案.gitignore、配置別名、搭建Git伺服器(十八)

在 安裝 Git 一節中,我們已經配置了使用者名稱 user.name 和 Email 地址 user.email,實際上,Git還有很多可配置項。比如,讓 Git 顯示顏色,會讓 輸出的命令 看起來更醒目,如下: 這樣,Git 會適當地顯示不同的顏色,比如 git status

Linux下搭建Git伺服器 Jenkins持續整合環境部署

1、安裝Git 見 Jenkins持續整合環境部署 第四節 2、建立Git使用者和使用者組 1 groupadd git 2 useradd git -g git 3、建立證書切換到git使用者建立證書 1 su git 2 cd /home/git 3 mkdir .ssh 4 c

使用gitblit搭建git伺服器

前言 一直在學習新技術,我想都整理到部落格上。公司還在堅持用svn,之前學過git都快要忘記了,此篇部落格記錄搭建基於gitblit的git伺服器。當然直接使用linux也可以,不過我不是很熟悉,考慮到我的主語言是Java,也就用gitblit搭建了一個。 環境 Windows server 2016

在 Linux 下搭建 Git 伺服器後如何新建專案和新增使用者

關於如何在Linux 下搭建 Git 伺服器的問題,大家可以參考這篇文章(https://www.cnblogs.com/dee0912/p/5815267.html)。 我按照上面文章內容操作,確實搭建完成Git伺服器後,但是又出現了一個問題,如何新建專案,並且把參與開發人員加到該專案呢?下面

centos7搭建git伺服器(多使用者版)

建立倉庫並分享到組: git init --shared=group test 建立組: groupadd git 切換專案所屬組: chgrp -R git test 建立使用者1: useradd test1 -g git passwd test1 建立使用者2

cenos7 上搭建git伺服器

安裝git 在官網下載 tar.gz的包 然後放到 Linux(centos7系統)伺服器中 執行 tar -zxvf 檔名 來進行解壓檔案 然後 執行 git -version 來檢視git版本 正常出現版本號 繼續進行下一步 執行 useradd git 命令來建立 git使用者 然後 執行

centos7上搭建git伺服器

目錄 環境: 安裝git和建立使用者 建立證書登入 初始化git倉庫 踩得坑 tortisegit使用 環境: centos7,git 1.8.3,tortisegit 安裝git和建立使用者 注:$代表用root使用者登入 # 安裝Git $ y

搭建Git伺服器

Windows平臺下搭建Git伺服器 1、在自己電腦搭建Git伺服器,且只有自己的電腦能訪問。 即使是自己一個人在開發程式碼也強烈建議使用Git來管理程式碼。當然也可以只使用本地Git倉庫的形式來管理程式碼。 安裝Git:從這個網址下載,https://git-scm.com/downloads,

搭建git伺服器倉庫

1、安裝git $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git 2、建立git使用者組和使用者,專門用來執行g

搭建Git CentOS搭建Git伺服器及許可權管理

CentOS搭建Git伺服器及許可權管理   宣告:本教程,僅作為配置的記錄,細節不展開,需要您有一點linux的命令基礎,僅作為配置參考。 1. 系統環境 系統: Linux:CentOS 7.2 64位 由於CentOS已經內建了OpenSSH,如果您的

Git學習筆記<13> 搭建Git伺服器

搭建Git伺服器 準備一臺執行Linux的機器,強烈推薦用Ubuntu或Debian 擁有sudo許可權 第一步,安裝git: sudo apt-get install git 第二步,建立一個git使用者,用來執行git服務: sudo adduser git 第三步,建立

搭建git伺服器遠端倉庫_linux

搭建git伺服器遠端倉庫 安裝git軟體      yum install git 配置git的使用者資訊      git config --global  user.name "XXX

在Linux上搭建git伺服器

這裡我使用的是centos伺服器 1、安裝git yum -y install git 2、新新增使用者git adduser git 3、進入/etc/passwd將 git:x:1001:10

Git學習筆記11——配置Git搭建Git伺服器

忽略特殊檔案 有些時候,你必須把某些檔案放到Git工作目錄中,但又不能提交它們,比如儲存了資料庫密碼的配置檔案啦,等等,每次git status都會顯示Untracked files ...,有強迫症的童鞋心裡肯定不爽。 好在Git考慮到了大家的感受,這個問題解

CentOS 搭建 Git伺服器

GitHub是一個免費託管開原始碼的遠端倉庫,但是有時候我們既不想公開原始碼,又不想給GitHub交保護費。如果這時候我們有一臺自己的伺服器,那我們就可以把這個伺服器搭建成一臺Git伺服器作為私有倉庫使