澳门在线威尼斯官方 > 电脑操作 > 利用linux安装gitolite管理git

原标题:利用linux安装gitolite管理git

浏览次数:167 时间:2019-09-14

系统:centos7

本文讲解在ubuntu上安装gitolite,为客户端提供git仓库服务器功能。ubuntu版本:server 16.04
by kowen

服务器:阿里云

安装准备

  1. 安装gitolite前,要安装 git,openssh-server和 openssh-client
    sudo apt-get update
    sudo apt-get -y install git openssh-server openssh-client

  2. 准备好你的ssh私钥和公钥
    没有的话可在本地执行ssh-keygen -t rsa -C "yourname@example.com 生成一个,生成后在~/.ssh/目录里,id_rsa是私钥,id_rsa.pub是公钥,文件生成后可以改名。

  3. 上传公钥
    将公钥上传到服务器备用,比如是/tmp/YourName.pub

一、前期准备

添加git用户

sudo adduser --system --shell /bin/sh --group --disabled-password --home /home/git git

  • 使用命令添加加上--system参数,用户就不会在登陆界面显示
  • home是git用户主目录,也是git仓库的存储目录,如果仓库比较大可以放在别的盘中,比如我的就是/data/git

1.安装git

安装gitolite

  1. 登录到git用户
    sudo su - git
  2. 确保 ~/.ssh/authorized_keys 文件不存在或者为空
  3. 把公钥拷贝到git主目录下
    cp /tmp/YourName.pub $/Home/YourName.pub
  4. 下载并安装gitolite
git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
  1. 初始化gitolite, 同时配置管理员
    gitolite setup -pk YourName.pub
    如果以上命令提示找不到,执行下面的代替
    $HOME/bin/gitolite setup -pk YourName.pub
yum install git

克隆管理库到本地

不要直接在服务器上创建和管理仓库,仓库管理是通过叫gitolite-admin的仓库进行的,这个仓库在初始化gitolite时就已经生成了,管理员可以克隆到本地进行配置,在客户端执行

git clone git@服务器地址/gitolite-admin.git

如果提示输入密码,编辑客户端的~/.ssh/config文件,添加以下内容:

Host 服务器地址
    HostName 服务器地址
    User git
    Port 22
    IdentityFile /home/用户名/.ssh/私钥文件名

 

添加用户和仓库

gitolite-admin里面两个文件夹keydir和conf:

  1. keydir存储用户的公钥,添加用户可以直接拷贝用户的公钥到此文件夹;
  2. conf目录里的gitolite.conf是配置文件,格式如下:
repogitolite-admin
    RW+     =   id_rsa
repo    testing
        RW+     =   @all

比如要添加一个仓库‘foo',并给alice,bob和carol不同的权限,首先把他们的公钥(alice.pub,bob.pub,carol.pub)拷贝到keydir;然后编辑conf/gitolite.conf添加:

repo foo
    RW+         =   alice
    RW          =   bob
    R           =   carol

最后把修改push到服务器:

git add conf
git add keydir
git commit -m "added foo, gave access to alice, bob, carol"
git push

服务器会自动添加用户到~/.ssh/authorized_keys,并且添加一个新的空仓库'foo'。

上述操作完成后,alice、bob和carol就可以将仓库克隆到本地:
git clone git@服务器地址:foo

查看对仓库的操作权限,可以在客户端执行
ssh git@服务器地址 info

2.安装perl 

访问规则示例

gitolite的访问规则功能强大,以下是示例:

repo foo
    RW+                     =   alice
    -   master              =   bob
    -   refs/tags/v[0-9]    =   bob
    RW                      =   bob
    RW  refs/tags/v[0-9]    =   carol
    R                       =   dave

规则解释:

  • alice对所有branch和tag拥有所有权限--create, push, delete, rewind/overwrite等等
  • bob可以创建或者fast-forward push名字中不以’master‘开头的branch,可以创建不以v+数字开头的tag
  • carol只可以创建v+数字开头的tag
  • dave只有只读权限,可以clone/fetch。
yum install perl

管理组

某些时候使用组来管理用户是非常方便的,下面是两个组:

@staff      =   alice bob carol
@interns    =   ashok
repo secret
    RW      =   @staff
repo foss
    RW+     =   @staff
    RW      =   @interns

组成员可以累加,下面对@staff的定义和上面的效果是一样的:

@staff      =   alice bob
@staff      =   carol

组也可以包含其他组:

@all-devs   =   @staff @interns

@all是一个特殊组名称,既可以指所有的仓库,可以指所有的用户。

 

常用命令

客户端可以通过ssh远程执行一些命令,以下命令可以查看帮助:
ssh git@host help
info是最长用到的命令,在命令后跟上'-h'可以查看命令的用法。

在服务器端有非常丰富的使用命令,运行gitolite help查看详细信息。

3.安装openssh 

参考资料

https://github.com/sitaramc/gitolite

yum install openssh 

 

4.安装cpan(如果你的linux里面没有,就必须安装)

yum install cpan

 

5.准备两个用户(这两个用户可以是自定义的,并且他们相互之间没有读取对方目录的权限,不然会绕过gitolite,在执行update的hook的时候报环境变量的错误),这里为了好区分就用git和gitadmin。

useradd git

 

passwd git

 

useradd gitadmin

 

passwd gitadmin

 

这两个命令的作用分别是添加用户和为改用户设置密码

二、配置步骤

1.首先切换到gitadmin登录

su gitadmin

 

2.在gitadmin这个用户下生成公钥和秘钥

ssh-keygen

 

执行该命令后,公钥和密码会默认为rsa算法,并且保存在该用户的.ssh目录下,也就是/home/git/.ssh/id_rsa。

如果想查看生成的公钥和秘钥可以执行cd /home/git/.ssh/,id_rsa就是秘钥,id_rsa.pub就是公钥

3.把gitadmin的公钥复制出来

cp  id_rsa.pub  tmp/gitadmin.pub

 

这里复制的目的是为了等下切换git用户可以设置该公钥为具有管理git仓库权限的公钥,所以这里就直接放在tmp目录下了。

官方规范,把公钥的名字设为用户的名字,以便区分。

4.这里切换git用户

su git

 

这里的git用户主要是用来放git仓库和设置管理员的权限的。

确保~/.ssh/authorized_keys是空的或不存在的,authorized_keys是用来存储所有使用gitolite的用户的公钥的

5.切换到该用户的用户目录并安装gitolite

cd

 

git clone https://github.com/sitaramc/gitolite

 

mkdir -p $HOME/bin

gitolite/install -to $HOME/bin

 

然后设置git的管理员,也就是我们的gitadmin

$HOME/bin/gitolite setup -pk /tmp/gitadmin.pub

 

到这里gitolite和管理员已经设置完成了

三、添加用户和推送配置

gitolite的所有添加仓库和用户还有设置权限都要通过gitadmin来推送,配置才能生效。

1.现在切换回gitadmin用户

su gitadmin

 

然后回到gitadmin的用户目录,为了是把等下克隆的gitolite的管理仓库,直接放在用户目录下便于查找

cd

 

2.克隆在gitolite管理配置

git clone git@127.0.0.1:gitolite-admin这个地址格式要注意规范,地址写127.0.0.1是因为在同一台服务器,如果想用其他服务器可以更换地址。

`特别要注意的是不能写成git clone git@127.0.0.1:/home/git/repostories/gitolite-admin,这样的写法也能克隆到项目,但是并不是通过gitolite来触发的。`

``绕过gitolite的后果会导致后面推送的时候触发update.pm这个hook报环境变量错误。如果没有成功地使用gitolite来克隆项目,是会提示你要输入这个账号的密码。

当出现密码提示的时候,请返回查看之前的操作步骤有没有遗漏,否则,后面的很多操作都无法实现。

``因为我们前面已经为gitadmin配置了管理权限的公钥,理论是可以直接克隆成功的。

``3.打开gitolite-admin

本文由澳门在线威尼斯官方发布于电脑操作,转载请注明出处:利用linux安装gitolite管理git

关键词:

上一篇:没有了

下一篇:没有了