使用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伺服器作為私有倉庫使