Gitosis 就是一套用来管理 authorized_keys文件和实现简单连接限制的脚本。
添加用户和设定权限是管理一个特殊的 Git 仓库。
Gitosis的安装和配置
gitosis是用python写的,安装前需要提前安装python相关解析相关库
yum -y install python-setuptools
从 Gitosis 项目主页克隆并安装
git clone https://github.com/tv42/gitosis.git
注意:git clone时可能发生错误,提示:fatal: HTTP request failed。
更新软件
yum update -y nss curl libcurl
cd gitosis
安装python
sudo python setup.py install
生成本机SSH密钥
ssh-keygen -t rsa -C "miaoheping@qq.com"
将~/.ssh/id_rsa_pub公钥文件上传到服务器上
上传管理员公钥 , (如果已有ssh,在 ~/.ssh下 id_rsa.pub文件)
scp ~/.ssh/id_rsa.pub root@192.168.1.200:/tmp
初始化gitosis
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
在本地拉取
git clone git@192.168.1.200:gitosis-admin.git
说明:此时会得到一个名为 gitosis-admin 的工作目录,主要由两部分组成:./gitosis.conf ./keydir ./keydir/miaoheping@qq.com, 仓库管理在gitosis.conf 中,keydir目录下用来保存需要拉代码的人员的公钥。gitosis.conf 文件是用来设置用户、仓库和权限的控制文件。keydir 目录则是保存所有具有访问权限用户公钥的地方— 每人一个。在 keydir 里的文件名(miaoheping@qq.com.pub)Gitosis 会自动从使用 gitosis-init 脚本导入的公钥尾部的描述中获取该名字。
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = miaoheping@qq.com
说明:用户 miaoheping@qq.com — 初始化 Gitosis 公钥的拥有者 — 是唯一能管理 gitosis-admin 项目的人。
例如:添加一个新项目,叫shop
[group shop]
members = miaoheping@qq.com
writable = shop
修改完之后,提交 gitosis-admin 里的改动,并推送到服务器使其生效。
git add .
git commit -m ‘add project’;
git push git@192.168.1.200:gitosis-admin.git master
或
git push origin master
注意:不用事先到服务器上手工创建该项目的裸仓库— Gitosis 会在第一次遇到推送时自动创建。
要和朋友们在一个项目上协同工作,就得重新添加他们的公钥。
不过这次不用在服务器上一个一个手工添加到 ~/.ssh/authorized_keys 文件末端,
而只需管理 keydir 目录中的公钥文件。文件的命名将决定在 gitosis.conf 中对用户的标识。