作者:​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