CentOS 6.3下使用Gitosis安装搭建Git Server教程

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

传送门:

四.安装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 登录服务器,应该会看到类似下面这样:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5a7d344791b581c10bee97d0f073cf05.html