CentOS6.3系统中Gitosis安装部署步骤

  Git作为一个分布式的版本控制系统,使用git的时候,一般和服务器通讯使用的是ssh协议,用ssh的主要优点是速度快(传输前数据会先压缩,比HTTP快),安全,方便读写。 

  客户端通过ssh访问服务器端的验证方式一般有两种,一种是用户名密码的方式,一种是使用公私钥认证的方式. 使用公私钥的方式比较方便,无需每次登录输入密码。 

  某个受信任的客户端的公钥会被设置在服务器端的 ~/.ssh/authorized_keys文件中,有关此文件的格式可以参见 sshd的用户手册 man sshd . authorized_keys有个比较厉害的功能是 支持 command参数,使得每次用户使用此公钥进行验证的时候执行此后面的命令.这样就可以做一些逻辑处理了. 

  一般git库的管理需要权限控制,如何方便简单的进行库的权限管理呢? authorized_keys是一个思路,指定特定command参数,每次验证好用户后首先执行相关逻辑,检测当前用户是否具有某个权限。 所以便有了gitosis,与其说gitosis是一个git权限管理系统,还不如说它是一个authorized_keys文件管理器.

 

解决方案:

 

一.环境部署

操作系统:              centos6.3 x64

Git:                         git-1.7.1

Gitosis:                   Gitosis

Gitweb:                   1.7.1-3         

OpenSSH Server:     openssh-server-5.3p1

apache:                  httpd-2.4.4

python-setuptools:   python-setuptools-0.6.10-3

         

Git server(centos6.3 x64): node2.example.com

Git client(centos6.3 x64): node1.example.com

server端配置:

一.关闭iptables和SELINUX

 代码如下 复制代码

# service iptables stop

# setenforce 0

# vi /etc/sysconfig/selinux

---------------

SELINUX=disabled

---------------

二.同步时间

 代码如下 复制代码

# ntpdate cn.pool.ntp.org

三.安装apache

传送门:http://www.showerlee.com/archives/6

四.安装OpenSSH

1.yum安装OpenSSH:

 代码如下 复制代码

# yum install openssh-server -y

2.修改ssh服务端配置:

# vi /etc/ssh/sshd_config

——————————————————————————————

   Port 22 # 修改成你想要的登陆端口

   PermitRootLogin no # 禁止root用户登陆

   StrictModes yes # 检查密钥的用户和权限是否正确,默认打开的

   RSAAuthentication yes # 启用 RSA 认证

   PubkeyAuthentication yes # 启用公钥认证

   PasswordAuthentication yes # 启用密码认证,默认是打开的

   ServerKeyBits 1024 # 修改后变为此状态,将ServerKey强度改为1024比特

  PermitEmptyPasswords no # 修改后变为此状态,禁止空密码进行登录

——————————————————————————————

3.重启服务:

 代码如下 复制代码

# /etc/init.d/sshd restart

五.安装Git 

 代码如下 复制代码

# yum install git-core -y

 

六.安装Gitosis

1.安装Gitosis依赖python-setuptools包

 代码如下 复制代码

# yum install python-setuptools -y

2.安装Gitosis

 代码如下 复制代码

# cd ~

# mkdir src

# cd src 

# git clone https://github.com/tv42/gitosis.git

# cd gitosis

# python setup.py install

 

3.为gitosis创建系统用户 

 代码如下 复制代码

# useradd -m git

# passwd git

 

4. 运行gitosis

(1).将管理员生成的公钥上传或拷贝到服务器上。这里的公钥需要在git服务器管理员下使用ssh-keygen命令来创建

# su - git

保证web页面有权限显示该仓库内容

 代码如下 复制代码

# chmod -R 755 /home/git

# ssh-keygen -t rsa

# cp ~/.ssh/id_rsa.pub /tmp

(2).初始化gitosis

进入到拷贝过来的id_rsa.pub所在目录

 代码如下 复制代码

# cd /tmp

# gitosis-init < id_rsa.pub

此时,会在/home/git目录下生成gitosis仓库和配置目录

 代码如下 复制代码

# cd /home/git

# ll

----------------------------------------------------------------

drwxr-xr-x 2 git git 4096 Aug 12 13:39 gitosis

drwxr-xr-x 4 git git 4096 Aug 12 13:39 repositories

---------------------------------------------------------------

(3).切换回当前(root)用户

# exit

(4).配置权限

如果想要别人能够clone gitosis-admin.git,需要执行以下操作:

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

至此,gitosis的安装工作已完成,其相关配置可以有管理员来操作,然后再提交到服务器上.

(5)现在可以试一下用初始化 Gitosis 的公钥的拥有者身份 SSH 登录服务器,应该会看到类似下面这样:

 代码如下 复制代码

# su - git

$ ssh git@127.0.0.1

------------------------------------------------

PTY allocation request failed on channel 0

ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.

  Connection to gitserver closed.

------------------------------------------------

说明 Gitosis 认出了该用户的身份,但由于没有运行任何 Git 命令,所以它切断了连接。那么,现在运行一个实际的 Git 命令 — 克隆 Gitosis 的控制仓库:

在你本地计算机上克隆git仓库

 代码如下 复制代码

# cd /tmp

# git clone git@gitserver:gitosis-admin.git

这会得到一个名为 gitosis-admin 的工作目录,主要由两部分组成:

红色为git仓库配置,蓝色为实际仓库保存的文件

 代码如下 复制代码

# cd gitosis-admin

# ll -a

----------------------------------------------------------

total 20

drwxr-xr-x 4 git git 4096 Aug 12 13:21 .

drwxr-xr-x 4 git git 4096 Aug 12 13:23 ..

drwxr-xr-x 8 git git 4096 Aug 12 13:22 .git

-rwxr-xr-x 1 git git  157 Aug 12 13:21 gitosis.conf

drwxr-xr-x 2 git git 4096 Aug 12 13:20 keydir

-----------------------------------------------------------

以上操作相当于,系统git用户初始化并成为gitosis管理员,且利用其管理员权限将gitosis-admin仓库clone到本地.

 

5.添加本地用户john和仓库test到gitosis,并和管理员git合作管理gitosis

1. 用户john添加并发送id_rsa.pub给git

 代码如下 复制代码

# su -

# useradd john & passwd john

# su - john

# ssh-keygen -t rsa

-----------------------------------------------------------

Generating public/private rsa key pair.

Enter file in which to save the key (/home/john/.ssh/id_rsa): 

Created directory '/home/john/.ssh'.

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /home/john/.ssh/id_rsa.

Your public key has been saved in /home/john/.ssh/id_rsa.pub.

-----------------------------------------------------------

# cp /home/john/.ssh/id_rsa.pub /tmp

2. gitosis管理员git分配john权限

 代码如下 复制代码

# su - git

# mkdir projects

# cd ~/projects

# git clone git@node2.example.com:gitosis-admin

# cd gitosis-admin

# cat gitosis.conf

------------------------------------------------

[gitosis]

[group gitosis-admin]

writable = gitosis-admin

members = git@node2.example.com

------------------------------------------------

# ls keydir/

-------------------------

git@node2.example.com.pub

-------------------------

# cp /tmp/id_rsa.pub keydir/john.pub

# vi gitosis.conf

————————————————————————————————————

[gitosis]

[group gitosis-admin]

writable = gitosis-admin

members = git@node2.example.com

[group test]

writable = test

members = git@node2.example.com john

————————————————————————————————————

# git add .

# git commit -am "add member john and project foo"

# git push

3. 用户git添加项目test

 代码如下 复制代码

# su - git

# cd ~/projects

# mkdir test

# cd test

# git init

# echo "Hello World." > hello.txt

# git add hello.txt

# git commit -am 'first commit'

# git remote add origin git@node2.example.com:test.git

# git push origin master

4. 用户 john clone test并修改hello.txt

# su - john

# git clone git@node2.example.com:test.git

# cd test

# date >> hello.txt

# git commit -am 'add time to hello.txt' && git push

整个过程分为:

1.通过修改gitosis-admin管理gitosis用户权限,需要clone到本地,然后修改配置文件,最后add push将结果推送到远程实现权限修改.

2.添加系统用户,生成该用户公钥,并将其复制到keydir下,实现该用户有权限进行git等相关操作.

3.登陆该用户账户进行git相关操作,修改完后commit,push到中服务器即可完成仓库权限配置.

七.安装gitweb

1.首先我们需要Git的源码,其中带有GitWeb,并能生成定制的CGI脚本:

 代码如下 复制代码

# git clone git://git.kernel.org/pub/scm/git/git.git

# cd git/

# make GITWEB_PROJECTROOT="/home/git/repositories" prefix=/usr gitweb       

# cp -rf gitweb /usr/local/apache2/htdocs/

注: 通过指定 GITWEB_PROJECTROOT 变量告诉编译命令 Git 仓库的位置

2.设置Apache以CGI方式运行该脚本,并添加一个VirtualHost配置:

(1).加载apache的vhost配置文件

 代码如下 复制代码

# vi /usr/local/apache2/conf/httpd.conf 

搜索包含httpd-vhosts的行,并去掉该行注释.

(2).加载cgid模块,使其支持perl语言.

 代码如下 复制代码

# vi /usr/local/apache2/conf/httpd.conf 

搜索包含mod_cgid.so的行,并去掉该行注释.

(3).配置VirtualHost

# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf 

添加如下配置:

——————————————————————————————————————————

 代码如下 复制代码

<VirtualHost *:80>

    ServerName git.example.com

    DocumentRoot /usr/local/apache2/htdocs/gitweb

    <Directory /usr/local/apache2/htdocs/gitweb>

        Options +ExecCGI

        AllowOverride All

        order allow,deny

        Allow from all

        AddHandler cgi-script cgi pl

        DirectoryIndex gitweb.cgi

    </Directory>

</VirtualHost>

——————————————————————————————————————————

 

(4).安装Time/HiRes.pm perl模块

首次打开web页面报Can't locate Time/HiRes.pm in @INC ….错误

解决方法:

 代码如下 复制代码

# yum install perl-devel perl-CPAN -y

# perl -MCPAN -e shell 

cpan[2]> install Time::HiRes 

cpan[3]> exit 

(5).重启apache服务

 代码如下 复制代码

# /usr/local/apache2/bin/apachectl restart

(6).修改本机HOST,并打开gitweb页面

 

大功告成.

时间: 2024-09-15 00:21:40

CentOS6.3系统中Gitosis安装部署步骤的相关文章

CentOS6.7系统中编译安装MariaDB数据库_mariadb

环境:CentOS6.7,minimal安装. 前提条件:安装了编译环境,安装了Apache. 1.下载解压 # wget http://archive.mariadb.org//mariadb-5.5.44/bintar-linux-x86/mariadb-5.5.44-linux-i686.tar.gz # tar xf mariadb-5.5.44-linux-x86_64.tar.gz -C /usr/local # cd /usr/local 2.创建数据目录 # mkdir -pv

CentOS6.6系统中vsFTP安装与配置详解

第一步:安装vsftp pam db4 yum install vsftpd pam* db4* -y 使用命令将vsftp配置为系统服务 chkconfig --level 35 vsftpd on 第二步:配置vsftpd服务的宿主 #useradd vsftpd -s /sbin/nologin 这个vsftpd只是用来替换root的,并不需要登录 第三步:建立ftp虚拟宿主帐户 #useradd ftpuser -s /sbin/nologin 这ftpuser只个虚拟帐户的宿主,本身是

Linux CentOS6.6系统中安装mysql源码包的方法_Linux

这里以CentOS6.6系统中安装MySQL的源码包,进行讲解. 1. mysql源码包的下载 mysql安装包的官方下载地址为:http://dev.mysql.com/downloads/mysql/5.6.html 打开该下载地址后,在 "Select Version:"处,选择要下载的mysql的版本,我选择的是5.6.34:在"Select Platform:"处,选择适用的操作系统类型,由于是下载源码包,故这里我们要选择Source Code. 之后,会

CentOS6.4系统中Mysql数据库卸载、安装与配置

  就像Windows server 2003,2008中一般安装的是Sql Server 数据库,在linux系统中一般安装的是mysql数据库,而且Mysql数据库的第一个版本就是发行在Linux系统上的. 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL的SQL语言是用于访问数据

Storm集群安装部署步骤

开始学习Storm,本文主要记录Storm集群安装部署步骤,不包括对Storm的介绍. 安装storm集群,需要依赖以下组件: Zookeeper Python Zeromq Storm JDK JZMQ 故安装过程根据上面的组件分为以下几步: 安装JDK 安装Zookeeper集群 安装Python及依赖 安装Storm 另外,操作系统环境为:Centos6.4,安装用户为:root. 1. 安装JDK 安装jdk有很多方法,可以参考文博客使用yum安装CDH Hadoop集群中的jdk安装步

CentOS系统中一键安装Openstack图文教程_OpenStack

前言 首先找到一个国外的网站, http://openstack.redhat.com/Main_Page,进入到quickstart页面中 简单翻译如下:       用到的工具是一个被成为RDO的东东, 能够在基于RHEL内核的linux系统,如RedHat,CentOS,Scientific Linux下,快速实现三步安装.  一:安装RDO软件 sudo yum install -y http://rdo.fedorapeople.org/rdo-release.rpm 二:安装一个叫p

XP系统中无法安装新字体怎么解决?

  XP系统中无法安装新字体怎么解决?          一直来用的XP好好的,不过早些天,北极鱼也算是终于出RPWT了:自己的XP系统出了点问题,导致字体安装不上,欲安装字体,将字体复制到C:WINDOWSFonts时,没有弹出"安装新字体"的提示,以至复制进文件夹的字体无法使用,C:WINDOWSFonts下的文件菜单里也没有"安装新字体"选项,,可能很多朋友也曾经遇到过这样的情况吧? 当时第一个反应就是google和baidu.可是搜索结果要么是98系统的解决

在linux系统中我安装了helix server服务器,但是看不了helix里的视频

问题描述 在linux系统中我安装了helix server服务器,但是看不了helix里的视频 我在linux系统中安装了helix server服务器,现在能通过登录到后台管理了. 但是我想看看helix server服务器中的视频还是看不了. 我是从网上找的资料教程安装的,资料让输入一个地址就能访问到视频了, 但是我输入地址后,它让我选择用什么应用打开. 截图如下: 是还需要配置一个客户端还是需要怎么样? 最好给一个详细一点的答案或者是安装包. 哪位大神知道,指教一下. 谢谢了. 解决方案

Google将对Android系统中已安装App带来实时监控功能

Google将对Android系统中已安装App带来 实时监控功能Google 一直都希望对你的 Android 智慧型装置带来更全面地保护,除了有效限制伤害的 Sandbox 环境外,他们还直接为 Google Play 加上了另一道名为 Verify Apps 的验证锁头,在使用者安装应用程式的时候可以有效地透过验证机制,阻绝恶意程式的被安装在装置之上.现在,他们打算将这个资安防护的层级更进一步,带来"全时"监控已安装 App 的加强功能 -- 并且将在近期之内加入 Android