版本信息
- ubuntu : 14.04.1
- git version 1.9.1
- perl v5.10.1
- ssh OpenSSH_6.6.1p1
本次安装的git server使用gitolite实现。
参考资料
官网代码库
https://github.com/sitaramc/gitolite
官网手册
概念
gitolite依赖ssh公钥私钥鉴权机制。
ssh 公钥,私钥
ssh本身支持多种登陆鉴权:
- 基于口令方式(安全级别低,存在被窃听风险)
- 基于秘钥方式,安全级别高
gitolite安装
安装非常简单,列表如下:
- 在root或者其它账号下创建公钥,私钥对
ssh-keygen
保留 id_rsa 文件
下载 id_rsa.pub 文件备用
- root创建git账号
- 切入到git账号,su - git,克隆官网代码
git clone git://github.com/sitaramc/gitolite
- 按照官网介绍的后续安装步骤
- mkdir -p ~/bin
- gitolite/install -ln ~/bin
- gitolite setup -pk yourname.pub
这里的yourname.pub是刚才留存的pub文件。
服务端安装基本上结束了。
服务端管理
服务端管理是通过特殊仓库 gitolite-admin 来完成。
任何持有最初创建的公钥私钥对里面的私钥的人,都可以用该私钥克隆gitolite-admin库。
git clone git@192.168.1.5:gitolite-admin.git
上面命令有几处需要注意:
- ip是真实的服务器ip;
- 冒号后面没有/home/git/repositories路径,不需要,也不能加。
- 执行该命令的人必须持有 id_rsa 文件,并放入 .ssh 路径。
管理库克隆出来后,对keydir和conf目录中的文件管理和修改等同于操作一般的git库。
修改完成后,push到远端,远端会自动解析相关内容,并根据配置增加、删除用户,增加、删除git库。
可以参考: http://gitolite.com/gitolite/gitolite.html#basic-admin
理解
ssh协议的远端地址是可以指定用户的,其实从理论上来说,
所有人,都是使用git用户的,只是提供给系统的公钥不同,
服务端根据客户端提供的公钥私钥对来匹配,完成鉴权。