一 git服务器的搭建
1.安装git
yum install git -y
2.创建一个git用户(禁用shell登录)
- useradd git -s /usr/bin/git-shell
3.创建证书登录文件(
authorized_keys
)
- cd /home/git
- mkdir .ssh
- touch .ssh/authorized_keys
- chown -R git:git .ssh
- chmod 600 .ssh/authorized_keys
4.初始化Git仓库
1.选定目录/home/git/sample.git
- mkdir -p /data/gitroot
- cd /data/gitroot
git init --bare sample.git
chown -R git:git sample.git
5.本地克隆远程仓库
1.安装git
yum install git -y
ssh-keygen -t rsa -C "msun"
#将用户根目录下的.ssh/id_rsa.pub 编辑到ssh公钥到远程仓库
/home/git/.ssh/authorized_keys
2.复制远程版本库
git clone git@IP:版本库路径
二 Gitosis管理
Gitosis就是用来管理authorized_keys文件和实现简单连接限制的脚本。
1.安装依赖Python-setuptools
yum install python-setuptools -y
2.安装gitosis
cd
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
3.默认gitosis会把/home/git做为存储所有Git仓库目录,所以做需做软连接。
- ln -s /data/gitroot/ /home/git/repositories
4.备份已存在的authorized_keys文件
mv /home/git/.ssh/authorized_keys /home/git/.ssh/ak.bak
- chown -R git:git /data/gitroot/
5.恢复git用户的登录shell
sed -i 's#/usr/bin/git-shell#/bin/bash#g' /etc/passwd
6.配置gitosis
#从git用户获得他的公匙用于初始化,此公匙所有者将成为gitosis管理员
scp root@192.168.1.168:/root/.ssh/id_rsa.pub /tmp/
#初始化
sudo -H -u git gitosis-init < /tmp/id_rsa.pub
#post-update脚本加可执行权限
chmod 755 /data/gitroot/gitosis-admin.git/hooks/post-update
以下配置都在公匙git用户操作
7.尝试连接测试
[root@test2 ~]# ssh git@192.168.1.166
PTY allocation request failed on channel 0
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
Connection to 192.168.1.166 closed.
8.创建git库,并完成初始化
mkdir /gitcode
cd /gitcode/
git init
git config --global user.name "msun"
git config --global user.email "msun1996@163.com"
9.克隆Gitosis的控制仓库
- git clone git@192.168.1.166:gitosis-admin.git
[root@test2 ~]# tree gitosis-admin/ gitosis-admin/ ├── gitosis.conf └── keydir └── msun.pub
#gitosis.conf文件用来设置用户、仓库和权限的控制文件
#keydir保存具有访问全限的用户
10.设置权限
vim gitosis-admin/gitosis.conf
[gitosis]
[group gitosis-admin] #组名称
members = msun #成员名单
writable = gitosis-admin #权限
#追加测试
[group mobile]
members = msun
writable = iphone_project
11.提交修改
- cd gitosis-admin/
- git add gitosis.conf
git commit -m "test"
git push