系统: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的时候报环境变量的错误),这里为了好区分就用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

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,

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



使用linux安装gitolite管理git的更多相关文章

  1. centos7 安装 gitolite (git服务器)

    gitolite简介 轻量级git服务器程序,解决了git权限管理的问题.(git是一个分布式版本控制系统,就是说每个人作为客户端的同时又是服务器)项目GitHub地址:https://github. ...

  2. Linux安装指定版Git以及卸载

     来自于:https://www.cnblogs.com/rstyro/articles/10817855.html 安装Git 在linux中,安装Git 一般一条命令即可,如下: Debian/U ...

  3. Linux 安装指定版本Git

    git二进制文件下载地址: https://mirrors.edge.kernel.org/pub/software/scm/git/ 1.下载v2.21.0版本 wget https://mirro ...

  4. java linux安装jdk,git, maven

    jdk8下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html mkdir ...

  5. Gitolite轻松部署/管理git server

    对于今天越来越受欢迎的Git,相信做开发的朋友都基本有所耳闻.它最大的便利就是分布式的开发库,让使用git作为源码管理库的开发者可以在本地提交代码的修改而不用提交到远程的库,同时需要和团队协作.同步代 ...

  6. Linux安装Jenkins并部署springboot项目

    安装步骤: 1.跳转连接https://pkg.jenkins.io/redhat-stable/下载安装包 2.安装命令: sudo rpm -ih jenkins-2.73.2-1.1.noarc ...

  7. linux上安装gitolite和windows上安装tortoisegit及msysgit

    1 quick install+setup for experts If your Unix-fu and ssh-fu are good, just copy your ssh public key ...

  8. 使用 gitolite 管理配置 git 库的权限

    问题:每次创建git库都需要在gitolite的配置文件中添加git库的配置信息,为了方便管理git库,不在重复提交,所以修改gitolite的配置管理文件. 环境:ubuntu16.04 安装git ...

  9. Linux程序包管理之yum及源代码安装

    第十六章.Linux程序包管理之yum及源代码安装 目录 yum介绍 yum配置文件 yum的repo配置文件中可用的变量 yum命令的使用 使用光盘作为本地yum仓库 如何创建yum仓库 编译安装的 ...

随机推荐

  1. 14.插入数据、复制数据--SQL

    一.插入完整的行 要求指定表名和插入到新行中的值 INSERT INTO Customers ', 'Toy Land', '123 Any Street', 'New York', 'NY', ', ...

  2. python进阶03 继承

    python进阶03 继承 一.继承 课堂练习:假设你正在参与一个魔幻类角色游戏的开发,公司需要腻味这个游戏设计两个角色的类: a.剑士 属性:1.角色名:2.角色等级:3.生命值:4.攻击力 行为: ...

  3. 寒假作业第二组P&&Q&&R题解

    P的题意是有M份作业,这些作业有不同的截止日期,超过截止日期完成,不同的作业有不同的罚分,求如何完成罚分最低. 首先,从截止日期最长的那个作业到截止日期,这些天数是固定的,所做的就是把这些作业填进这些 ...

  4. CellSet 遍历

    CellSet 结构: 查询MDX: SELECT NON EMPTY {{ {{ {{ {{ {{ AddCalculatedMembers([店铺.店铺ID].[店铺ID].Members)}} ...

  5. [原]Maven项目编译后classes文件中没有.xml问题

    在做spring+mybatiss时,自动扫描都配置正确了,却在运行时出现了如下错误.后来查看target/classes/.../dao/文件夹下,发现只有mapper的class文件,而没有xml ...

  6. 一步步实现自己的ORM(二)

    在第一篇<一步步实现自己的ORM(一)>里,我们用反射获取类名.属性和值,我们用这些信息开发了简单的INSERT方法,在上一篇文章里我们提到主键为什么没有设置成自增长类型,单单从属性里我们 ...

  7. DOCKER启动失败Job for docker.service failed because the control process exited with error code. See "syste mctl status docker.service" and "journalctl -xe" for details.

    [root@localhost ~]# systemctl start docker Job for docker.service failed because the control process ...

  8. 基于名称的虚拟主机-Apache

    基于名称的虚拟主机和基于IP的虚拟主机的对比 基于IP的虚拟主机使用连接的IP地址来识别(区分)正确的虚拟主机,所以对于每一个虚拟主机,你都需要有独立的IP地址. 基于名称的虚拟主机,服务器依赖于客户 ...

  9. VC中包含的头文件名不区分大小写

    VC中包含的头文件名,不区分大小写如 #include "my.h" = #include "MY.H".

  10. js读取excel数据后的时间格式转换

    使用xlsx.full.min.js 获取excel的日期数据为:37858: 拿到的整数值是日期距离1900年1月1日的天数,这时需要写一个函数转换: function formatDate(num ...