一步一步教你搭建类似github的git服务器和Gitosis用户管理
github是一家免费托管源代码的商业公司,由于服务器在国外,所以国内访问有时很慢,另外对于国内的大公司而言,商业源码是高度保密的,不会放在github上,他们会自己搭建git服务器进行代码托管。
今天就给大家来讲讲如何搭建git服务器,今天我们在linux服务器上搭建
一、搭建git服务器
1、安装git
sudo apt-get install git2、添加git用户
sudo adduser git3、收集工作电脑的公钥文件id_rsa.pub,统一放到/home/git/.ssh/authorized_keys中,一行放一个
4、选定一个目录作为Git仓库,假定是/bfw/sample.git,在/bfw目录下输入命令:
sudo chown -R git:git sample.git5、禁用shell登录
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行
git:x:1001:1001:,,,:/home/git:/bin/bash 改为: git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell6、工作电脑克隆git仓库
$ git clone git@服务器ip或域名:/bfw/sample.git Cloning into 'sample'... warning: You appear to have cloned an empty repository.二、Gitosis管理公钥
如果团队很小,把每个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。如果团队有几百号人,就没法这么玩了,这时,可以用Gitosis来管理公钥。
1、准备管理ssh公钥
登录git服务器,确保~/.ssh/authorized_keys 目录为空或不存在,确保你自己的工作电脑的公钥拷贝到 $HOME/YourName.pub
2、下载gitolite
git clone https://github.com/sitaramc/gitolite mkdir -p $HOME/bin gitolite/install -to $HOME/bin3、以你的公钥作为管理员安装gitolite
gitolite setup -pk YourName.pub如何上面的命令不能执行,请执行下面的命令
$HOME/bin/gitolite setup -pk YourName.pubok,gitolite安装好了,下面进行用户管理,注意:在进行用户管理时,比如确保git服务器上没有增加任何仓库和用户,防止gitolite无法进行托管
4、在工作电脑上执行:
git clone git@host:gitolite-admin执行完后,我们发现在gitolite-admin目录下有2个子目录conf与keydir
conf中有gitolite.conf,是gitolite的配置文件
keydir是用户存放公钥的地方
现在我们想增加小王、小李及小张,让其对仓库test进行管理
先将小王的公钥wang.pub、小李的公钥li.pub及小张的公钥zhang.pub 放到keydir目录下
然后编辑conf目录下的gitolite.conf文件,增加如下面的文字
repo test RW+ = wang RW = li R = zhang5、下面来提交更改
git add conf git add keydir git commit -m "added test, gave access to alice, bob, carol" git pushok,下面来讲解一下gitolite的权限配置
repo foo RW+ = alice - master = bob - refs/tags/v[0-9] = bob RW = bob RW refs/tags/v[0-9] = carol R = dave对于foo这个仓库,alice可以做任何操作
blob可以创建和push除了master之外的分支,创建和push除了v+数字之外的标签
carol 创建和push除了v+数字之外的标签
dave只能clone和fetch
gitolite用户分组
@staff = alice bob carol @interns = ashok repo secret RW = @staff repo foss RW+ = @staff RW = @internsgitolite用户分组组中组
@all-devs = @staff @internsgitolite组合并
@staff = alice bob @staff = carol 与下面效果一致 @staff = alice bob carol
网友评论0