作者:ding-404
1.配置前准备
服务器:安装ssh server另外还装了gitosis做git的权限管理
sudo apt-get install openssh-server git-core gitosis
客户端:安装git-core openssh-client
sudo apt-get install git-core openssh-client
使用ssh-keygen生成一对密钥,注意 这个时候不要用sudo
ssh-keygen -t rsa(全都直接回车即可)
默认情况下,公钥和私钥会保存在~/.ssh目录下
2.服务器配置
服务器:创建git服务器管理用户
sudo useradd -m git
sudo passwd git
切换到git用户
su git
初始化gitosis
gitosis-init < id_rsa.pub
设置权限让gitosis-admin仓库可clone
chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
3.客户端配置
客户端:在/tmp目录下clone仓库
cd /tmp
git clone git@hostname:/home/git/repositories/gitosis-admin.git
编辑gitosis.conf文件
cd gitosis-admin
nano gitosis.conf
****************************************************
[gitosis]
[group gitosis-admin]
writable = gitosis-admin
members = a@server1
[group developers]
writable = helloworld
members = a@server1 b@server2
[group test]
readonly = helloworld
members = c@server3
这个配置文件表达了如下含义:gitosis-admin组成员有a,该组对gitosis-admin仓库有读写权限; developers组有a,b两个成员,该组对helloworld仓库有读写权限; test组有c一个成员,对helloworld仓库有只读权限。 当然目前这些配置文件的修改只是在你的本地,你必须推送到gitserver上才能真正生效。 加入新文件、提交并push到git服务器:
将本用户的公钥拷贝到keydir目录内的user1.pud, 这个user1.pud名字 和gitosis.conf中的“members = user1”对应
cp /home/user1/.ssh/id_rsa.pud /tmp/gitosis-admin/keydir/user1.pud
git add .
git commit -am "add user1 pub"
git push