• 使用linux安装gitolite管理git


    系统:centos7

    服务器:阿里云

    一、前期准备

    1.安装git

    yum install git

    2.安装perl 

    yum install perl

    3.安装openssh 

    yum install openssh 

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

    yum install cpan

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

    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

    cd gitolite-admin

    会看到有conf和keydir两个文件夹

    conf用来添加或删除仓库,还有配置用户的分组还有每个用户/分组的读写执行权限,查看权限操作可以直接往后拉。

    keydir用来保存每个使用gitolite的用户的公钥,推送成功后,会在git用户的authorized_keys生成对应公钥。

    三、使用gitolite的来管理用户的权限

    1.打开另一台客户端(我本机使用的是windows系统)

    直接输入

    ssh-keygen

    大回车连续啪啪啪三次,就会在你C盘用户目录的.ssh文件夹下面生成一对公钥秘钥

    2.把公钥移到服务器端gitadmin用户的keydir目录中。

    这里有两种方法可以用:

    1)下一个winSCP,直接把文件拖过去。记得改一下名字,如:waldon.pub

    2)直接在客户端使用命令

    scp C://Users/waldon/.ssh/id_rsa.pub gitadmin@host:/home/gitadmin/gitolite-admin/keydir/waldon.pub

    这里host是你服务器的ip地址,waldon是我本机的用户名。

    提示输入gitamdin的密码后,就会看到上传公钥到服务器成功了。

    3.我们再切回root用户,创建一个新用户叫waldon。这个用户名要和你公钥的名字一致

    su root
    useradd waldon
    passwd waldon

    4.切换回gitadmin,打开conf文件夹,编辑gitolite.conf文件

    su gitadmin
    cd /home/gitadmin/gitolite-admin/conf
    vim gitolite.conf

    5.为用户配置权限

    在gitolite-admin仓库下添加刚刚配置的用户waldon

    repo gitolite-admin
    RW+ = gitadmin waldon

    按esc然后:wq保存退出

    6.推送配置到git服务器

    1)cd /home/gitadmin/gitolite-admin  回到gitolite-admin文件夹下

    2)git status  查看当前仓库的变化,这里应该会显示keydir/waldon.pub 和 conf/gitolite.conf 两个变更文件

    3)git add .  添加所有变动

    4)git commit -m "这里的提交注释随便填"  提交所有变动

    5)git push  推送配置,如果不想看到出现的警告,也可以用git push -u origin master 来具体到推送分支

    如果对这里的命令不熟悉可以去看看git的相关命令,如果出现要你配置邮箱和用户名的提示,按他提示的格式输入即可。

    7.切换回git用户,查看配置是否成功。

    su git 
    cd /home/git/.ssh
    cat authorized_keys

    当秘钥出现新的用户,就代表新增用户成功了。

    最后是一些简单的仓库权限配置,gitolite大部分的权限配置只是针对推送的。git的原意就是开源,分享代码,gitolite的出现已经很变态了,如果还想控制其他人读取代码目录的

    权限,那还是用SVN吧。

    所有的一切操作,除了切换用户,都是不需要密码的,因为秘钥会自动匹配,如果出现了需要密码的操作,有可能是你绕过了gitolite,

    会造成钩子触发失败的操作,从而导致推送失败。

     

     

     

     

     

     

     




     

     

  • 相关阅读:
    [leedcode 46] Permutations
    [leedcode 45] Jump Game II
    [leedcode 43] Multiply Strings
    [leedcode 42] Trapping Rain Water
    [leedcode 41] First Missing Positive
    [leedcode 40] Combination Sum II
    全排列
    [leedcode 39] Combination Sum
    [leedcode 38] Count and Say
    调和级数求和(分块)
  • 原文地址:https://www.cnblogs.com/coder-wdq/p/9375162.html
Copyright © 2020-2023  润新知