1、安装依赖库
sudo apt-get install git-core openssh-server openssh-client
sudo apt-get update
sudo apt-get install python-setuptools
2、设置git用户信息
git config --global user.name "kakintechnic"
git config --global user.email "kakintechnic@126.com"
sudo git config http.postBuffer 52428800
3、安装gitosis
gitosis主要是用于给用户授权,设置权限
git clone https://github.com/res0nat0r/gitosis.git
cd gitosis/
sudo python setup.py install
4、设置git帐户为服务器的管理员 例中用户名为"git" 密码为"123456"
sudo useradd -s /bin/bash -m git
sudo passwd git
输入密码123456
5、设置配置文件利用git用户登入shell
创建仓储点/mnt/fd1/gitserver/
cd /mnt/fd1/gitserver/
sudo mkdir gitrepository
sudo chown git:git gitrepository/
sudo chmod 700 gitrepository/
gitosis默认状态下会将仓库放在用户的repositories目录,所以创建一个链接进行映射
sudo ln -s /mnt/fd1/gitserver/gitrepository /home/git/repositories
查看当前shell是bash还是sh
echo $0
如果是sh修改成bash
sudo dpkg-reconfigure dash
sudo usermod -a -G adm git
sudo usermod -a -G sudo git
cd ~
在服务器端生成ssh公钥
ssh-keygen -t rsa
不设置密码
sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
设置post-update文件添加可执行的权限
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
6、创建项目仓库 用git登入shell
cd /home/git/repositories
git init --bare testproject.git
此时创建的项目还是空项目,其它客户端还不可以clone
7、在另一台客户端PC电脑生成一个用户密钥
生成ssh公钥
ssh-keygen -t rsa
密码:123456
cd /mnt/fd3/work/gituser
mkdir userkey
cp ~/.ssh/* userkey/
cp id_rsa.pub testuser.pub
7、使用gitosis管理用户设置项目权限
为了方便直接在服务器上操作,当然也可以通过id_rsa密钥在其它的客户端去操作
cd /mnt/fd1/gitserver/gitadmin
git clone git@192.168.1.8:gitosis-admin.git
vim gitosis.conf
修改配置添加以下用户的组的权限
[group testwrite]
#测试可以写的权限组
members = testuser#组用户
writable = testproject #可写的项目仓库名
如果多个项目仓库名或者组用户用空格分隔
修改完配置后保存,同将客户端生成的testuser.pub公钥放入GIT服务器的/mnt/fd1/gitserver/gitadmin/keydir目录
然后提交修改到GIT仓库
git config --global user.name "kakintechnic"
git config --global user.email "kakintechnic@126.com"
git add .
git commit -am "add a user permission"
git push origin master
然后重启一下服务器端的SSH服务,以让新添加的testuser公钥生效
sudo /etc/init.d/ssh restart
8、到此GIT服务器搭建完成并且已经创建了一个testproject的项目仓库
客户端可以通过testuser登入后去通过下面登入拉取项目
git clone git@192.168.1.8:testproject.git
![ade0309ebb84ab60ff62896203d5888e.png](https://i-blog.csdnimg.cn/blog_migrate/18c5411b375ee5c0292c946abc52218b.jpeg)