服务端
1,安装openssh服务断和客户端
yum -y install openssh
2,安装git和python-setuptools
yum -y install git python-setuptools
3,获取并安装gitosis,来管理git仓库
git clone https://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
客户端
4,在客户端操作生成RSA公钥,并把公钥上传到服务端的/tmp下
ssh-keygen -t rsa
scp ~/.ssh/xxx.pub root@server_ip:/tmp # “xxx” 是上一句shell生成的公钥的名称,“server_ip”是对应服务器的公网ip地址
服务端
5, 配置gitosis
useradd git # 创建git管理账户
sudo -H -u git gitosis-init > /tmp/id_rsa.pub #将公钥导入gitosis管理,生成管理账户,初始化gitosis-admin管理账户
chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update # 修改gitosis的push权限
6,为了操作时不输入密码将公钥添加到authorized_keys使用私钥访问
cat /tmp/id_rsa.pub >> /home/git/.ssh/authorized_keys
chmod 600 /home/git/.ssh/authorized_keys # 默认好像就是600
7,Gitosis配置,将管理项目 clone 到客户端
git clone git@127.0.0.1:/gitosis-admin.git
8,添加新项目,修改gitosis-admin.config
vim gitosis.conf
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = root@vm1 #显示用户root@vm1.pub是初始化gitosis公钥的拥有者,是唯一能管理gitosis-admin项目的人
[group jay_fans] #组名称
members = root@vm1 #密钥用户名
writable = git-test #项目名称
客户端
9, 初始、增加及使用项目git-test
cd /Desktop
mkdir git-test
cd git-test
git init
touch README
git add .
git commit -a -m “init git-test”
git remote add origin git@server_ip:git-test.git
git push origin master
注解:在新项目git-test里首次推送数据到服务器前,需先设定该服务器地址为远程仓库,但你不用事先到服务器上手工创建该项目的裸仓库— Gitosis 会在第一次遇到推送时自动创建。
特别注意RSA公钥的使用 :
在创建新项目时(管理项目除外)最好不要使用gitosis-admin的管理公钥,尽可能让它只服务于管理项目,否则在push或者clone的时候可能会报错例
如:fatal: ‘gitosis-admin.git’ does not appear to be a git repository
解决的办法是:
1.重新生成一对私钥公钥 并将公钥上传到管理项目的 keydir 用户使用对应的私钥进行操作 (推荐)
2.clone,push ,pull 使用全路径 例如:
git clone git@server_ip:/home/git/repositories/git-test.git
这样使用起来不叫麻烦