Gitosis配置手记

Git是目前世界上最先进的分布式版本控制系统。大名鼎鼎的GitHub就是一个免费托管开源代码的远程仓库。但既不想公开源代码,又舍不得给GitHub交保护费,那需要我们自己搭建一台Git服务器作为私有仓库使用。下面我们使用gitosis(https://github.com/res0nat0r/gitosis)这个服务器来配置这个私有仓库。简单地说,Gitosis 就是一套用来管理 authorized_keys文件和实现简单连接限制的脚本,它是Python开发的,所以要保证Python和Python setuptools提前安装好。
apt-get install python-setuptools

1. gitosis安装

(1). 首先要保证openssh的服务器和客户端已经被安装,并安装git
apt-get install openssh-server openssh-client
apt-get install git-core
(2). git配置准备

创建gitosis管理员的个人公钥和私钥。首先su到git用户下面
su - git
默认生成2048位,可以提高到4096位来提高安全级别,通过下面的命令创建公钥和私钥
ssh-keygen -t rsa -b 4096
默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:

初始化全局设置

(3)、获取并安装gitosis

2、管理gitosis

首先要用之前创建的管理员公钥初始化gitosis。

下面用用初始化 Gitosis 的公钥的拥有者身份 SSH 登录服务器,会显示下面的报错信息。

Gitosis 认出了该用户的身份,但由于没有运行任何 Git 命令,所以它断开了连接。下面通过git clone命令来连接并克隆gitosis的控制仓库。首先创建一个目录来
mkdir myrepo
这里我把服务器默认的ssh端口修改了,所以要在客户端中创建~/.ssh/config,并添加Port 12345这一行。然后执行下面语句克隆

这样gitosis的控制目录gitosis-admin就被clone下了。里面结构如下:

其中:
gitosis.conf 文件是用来设置用户、仓库和权限的配置文件。
keydir 目录则是保存所有具有访问权限用户公钥的地方,允许访问gitosis的用户的公钥都保存在这里。

这表明了用户git(初始化 Gitosis 公钥的拥有者)是拥有唯一管理 gitosis-admin这个仓库的权限。
下面我们可以新增一个项目。为此我们要建立一个名为dev的组(group),以及他们拥有写权限的项目。并允许’debugo’这个用户有权利读写’proj1’这个新项目:

debugo虽然已经添加到了配置文件中,但它的公钥还没有被gitosis获知。所以我们要将debugo的公钥改名为debugo.pub,拷贝到keydir中。

修改完之后,提交 gitosis-admin 里的改动,并push到服务器使其生效。

3. git项目管理

在debugo用户目录下,首先先初始化用户信息。

debugo用户已经有对proj1这个项目有读写权限了,但是proj1这个项目并没有任何内容。下面我们首先初始化一个本地项目。

OK!下面添加一个新的只读账户qa。在控制仓库中编辑一个新的组qa

下面在qa用户中,可以checkout这个项目了。

下面成功从server上clone下项目,并检查是否能进行提交。

^^

参考:

https://github.com/res0nat0r/gitosis

http://wiki.ubuntu.org.cn/Git%E6%9C%8D%E5%8A%A1%E5%99%A8Gitosis%E5%AE%89%E8%A3%85%E8%AE%BE%E7%BD%AE

http://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-Gitosis

Posted in Ops, Tools.