ubuntu server12.10 架设 gitolite 服务器

来源:互联网 发布:java 异常 throws 编辑:程序博客网 时间:2024/06/06 01:01

吐槽:作者花了4天的业务时间才终于搭建好这个服务器,对于国外的一些开源东西实在不敢恭维。因为他自己写的配置文档都是有问题的(据作者观察)


声明:本文结合了gitolite源作者教程(完全按照的话保管不行)、一位兄弟的csdn blog教程(其中解释不清楚),以及本人实际操作和理解,并对本文作出了必须有的解释而出现的。本文写作日期为2013-03-23。网络上大多数的转载文章都为旧版本gitolite,安装方法与现在有很大区别(尽管核心架构一样,但你不会或者非常困难安装成功的)。

关于参考的2片文章传送门如下:

https://github.com/sitaramc/gitolite#readme

http://blog.csdn.net/fightingbull/article/details/8116971


环境:

作者电脑:msysgit(也称客户端)(192.168.1.101,这个不描述都可以的)

PC服务器:ubuntu server 12.10(serverip=192.168.1.201);sxxx作为服务器的管理员(非root,但可切换为root)


前置步骤:

1.作者电脑安装msysgit。作为客户端使用。(若为cygwin的话,得安装git。因为msysgit本来就是windows下的git shell)

2.服务器安装git:

sudo apt-get install git

3.服务器安装openssh:

$sudo apt-get install openssh-server

4.在服务器上创建专用账号gitadmin,并将此用户加入组gitolite,用来提供git身份验证:

$sudo addgroup gitolite

$sudo adduser --ingroup gitolite gitadmin


关键步骤:

1.ssh的公钥认证(在客户端操作,即msysgit shell上)

该操作是在客户端,对于SSH的公钥认证请自行google。由于不能用同一个公钥用作shell访问和gitolite访问,我们需要建两个公私钥对,一个给shell,一个给gitolite用。you cannot use the same key for both shell access and for gitoliteaccess(××注意×× 此处是重点中的重点,在此作者被卡3天)

1.1生成2个密钥对

//该命令会在用户主目录下创建 .ssh 目录,并在其中创建两个文件:id_rsa(私钥);id_rsa.pub(公钥)

$ssh-keygen -t rsa

//该命令创建一个指定名字为gitadmin的公私钥文件对

$ssh-keygen –f ~/.ssh/gitadmin

1.2上传2个密钥对到服务器上

//上传到服务器用作gitolite访问,见gitolite安装(理解为gitolite shell访问)

$scp ~/.ssh/gitadmin.pub sxxx@serverip:/tmp/

//用作shell访问(理解为ssh shell访问)

$ scp ~/.ssh/id_rsa.pub sxxx@serverip:/tmp/   

1.3设置无密码登录服务器

//在msysgit shell 以sxxx账号登陆服务器(这个登录输入密码的)

$ssh sxxx@serverip   

 //用公钥id_rsa.pub,加入到无密码-SSH登陆到gitamdin身份,用作shell访问(在这之前请确保你的.ssh/authorized_keys不存在,或空。或自己管理好吧,反正我是先删掉的)

sxxx@serverip  :~$sudo ssh-copy-id –i /tmp/id_rsa.pub gitadmin@serverip

1.4建立SSH主机别名,以方便登陆服务器访问gitolite用

回到客户端,即退出sxxx这个shell,回到本地msysgit shell中。

$vi ~/.ssh/config

其内容为:

host gitadmin

 user gitadmin

 hostname serverip

 port 22

 identityfile ~/.ssh/gitadmin

设置完之后,

//将用默认的id_rsa来认证,可以登陆ssh shell,但非gitolite shell哦

$ssh gitadmin@serverip

//将以服务器账号gitadmin身份登陆服务器,注意不能登陆shell,但可访问gitolite。(关于这一步暂时还不能用,等最后配置完gitolite的公钥才可以,提前介绍)

$ssh gitadmin 

2.服务器安装gitolite(这里的话参照gitolite原作者的官方教程。)

2.1在msysgit登录到服务器端的gitadmin身份:

ssh gitadmin@serverip(由于之前设置了ssh无密码登录,以及配置了config文件,所以这里就不用密码直接登录到shell 了)

//进入gitadmin的home目录(本人习惯在这个目录安装gitolite)

cd ~

//使用git 下载最新的源码

git clone git://github.com/sitaramc/gitolite

//将作为安装目录

mkdir -p $HOME/bin
//把下载的源码安装到刚建立的bin目录中

gitolite/install -to $HOME/bin
//××注意×× 这里就是配置你的gitolite管理这身份的公钥的步骤了

$HOME/bin/gitolite setup -pk /tmp/gitadmin.pub
2.2 下载gitolite-admin,开始管理你的服务器咯

回到客户端的mysygit shell(就是别登录到服务器端)

//使用gitadmin的专用公钥,克隆gitolite-admin 库(gitolite的原作者教程写的是git clone gitadmin@serverip:gitolite-admin,作者尝试无数方法皆失败)

$git clone gitadmin:gitolite-admin 

成功的话,将在本地(作者目录为c:/users/administrator/.ssh/)看到你下载的gitolite-admin库目录了