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
二.同步时间
三.安装apache
传送门:http://www.weikejianghu.com/article/54969.htm
四.安装OpenSSH
1.yum安装OpenSSH:
五.安装Git
六.安装Gitosis
1.安装Gitosis依赖python-setuptools包
2.安装Gitosis
3.为gitosis创建系统用户
4. 运行gitosis
(1).将管理员生成的公钥上传或拷贝到服务器上。这里的公钥需要在git服务器管理员下使用ssh-keygen命令来创建
(2).初始化gitosis
进入到拷贝过来的id_rsa.pub所在目录
(3).切换回当前(root)用户
(4).配置权限
如<