Git作为一个分布式的版本控制系统,使用git的时候,一般和服务器通讯使用的是ssh协议,用ssh的主要优点是速度快(传输前数据会先压缩,比HTTP快),安全,方便读写。
客户端通过ssh访问服务器端的验证方式一般有两种,一种是用户名密码的方式,一种是使用公私钥认证的方式.使用公私钥的方式比较方便,无需每次登录输入密码。
某个受信任的客户端的公钥会被设置在服务器端的~/.ssh/authorized_keys文件中,有关此文件的格式可以参见sshd的用户手册mansshd.authorized_keys有个比较厉害的功能是支持command参数,使得每次用户使用此公钥进行验证的时候执行此后面的命令.这样就可以做一些逻辑处理了.
一般git库的管理需要权限控制,如何方便简单的进行库的权限管理呢?authorized_keys是一个思路,指定特定command参数,每次验证好用户后首先执行相关逻辑,检测当前用户是否具有某个权限。所以便有了gitosis,与其说gitosis是一个git权限管理系统,还不如说它是一个authorized_keys文件管理器.
解决方案:
环境部署
操作系统:centos6.3x64
Git:git-1.7.1
Gitosis:Gitosis
Gitweb:1.7.1-3
OpenSSHServer:openssh-server-5.3p1
apache:httpd-2.4.4
python-setuptools:python-setuptools-0.6.10-3
Gitserver(centos6.3x64):node2.example.com
Gitclient(centos6.3x64):node1.example.com
server端配置:
一.关闭iptables和SELINUX
复制代码