centos7.x+git+gitolite

一.     什么是Gitolite

Gitolite is an authorization layer on top of Git, relying on sshd or httpd for authentication.

Gitolite allows you to specify permissions not just by repository, but also by branch or tag names within each repository. That is, you can specify that certain people (or groups of people) can only push certain "refs" (branches or tags) but not others.

二.     安装Git


[[email protected] ~]# yum install git -y

[[email protected] ~]# git --version

git version 1.8.3.1

三.     创建Git用户


[[email protected] ~]# useradd git

[[email protected] ~]# passwd git

# 根据提示设置密码

[[email protected] ~]# su - git

[[email protected] ~]$ pwd

/home/git

[[email protected] ~]$ ls -a

.  ..  .bash_logout  .bash_profile  .bashrc

四.     安装Gitolite

克隆gitolite:


[[email protected] ~]$ git clone https://github.com/sitaramc/gitolite

创建bin目录并安装gitolite到bin目录:


[[email protected] ~]$ mkdir $HOME/bin

[[email protected] ~]$ gitolite/install -to $HOME/bin

(如果执行gitolite/install时报错BEGIN failed--compilation aborted at /home/git/gitolite/src/lib/Gitolite/Common.pm line 67,则需要先回到root用户并yum install -y perl-Data-Dumper.x86_64)


[[email protected] ~]$ cd bin/

[[email protected] bin]$ ll

total 24

drwxrwxr-x. 2 git git 4096 Jan 26 17:03 commands

-rwxrwxr-x. 1 git git 3292 Jan 26 17:03 gitolite

-rwxrwxr-x. 1 git git 9023 Jan 26 17:03 gitolite-shell

drwxrwxr-x. 3 git git   22 Jan 26 17:03 lib

drwxrwxr-x. 2 git git   92 Jan 26 17:03 syntactic-sugar

drwxrwxr-x. 3 git git  166 Jan 26 17:03 triggers

-rw-rw-r--. 1 git git   19 Jan 26 17:13 VERSION

drwxrwxr-x. 2 git git  174 Jan 26 17:03 VREF

五.     配置Gitolite管理员

gitolite使用特殊的版本库gitolite-admin来管理用户和版本库,所以需要创建一个管理员来管理所有的用户和版本库。

1. 用Git用户生成公钥

执行ssh-keygen并一路回车:


[[email protected] bin]$ cd

[[email protected] ~]$ ssh-keygen -t rsa

2. 修改.ssh/id_rsa.pub为admin.pub

改成admin.pub是gitolite的固定要求。


[[email protected] ~]$ mv .ssh/id_rsa.pub admin.pub

[[email protected] ~]$ ll

total 4

-rw-r--r--. 1 git git 400 Jan 26 17:19 admin.pub

drwxrwxr-x. 7 git git 137 Jan 26 17:13 bin

drwxrwxr-x. 6 git git 245 Jan 26 17:03 gitolite

3. 使用管理员公钥配置Gitolite


[[email protected] ~]$ $HOME/bin/gitolite setup -pk admin.pub

Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/

Initialized empty Git repository in /home/git/repositories/testing.git/

WARNING: /home/git/.ssh/authorized_keys missing; creating a new one

(this is normal on a brand new install)

4. 生成管理员管理仓库


[[email protected] ~]$ $HOME/bin/gitolite setup -pk admin.pub

Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/

Initialized empty Git repository in /home/git/repositories/testing.git/

WARNING: /home/git/.ssh/authorized_keys missing; creating a new one

(this is normal on a brand new install)

[[email protected] ~]$ git clone [email protected]:gitolite-admin

Cloning into ‘gitolite-admin‘...

The authenticity of host ‘127.0.0.1 (127.0.0.1)‘ can‘t be established.

ECDSA key fingerprint is SHA256:hrz8c27CZn4c/iIN0pFuC59qwheBUaUpszGP7if3oGs.

ECDSA key fingerprint is MD5:59:bf:ad:49:4f:c6:26:d4:e6:dd:d6:f0:5b:9d:48:6a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘127.0.0.1‘ (ECDSA) to the list of known hosts.

remote: Counting objects: 6, done.

remote: Compressing objects: 100% (4/4), done.

remote: Total 6 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (6/6), done.

进去看看:


[[email protected] ~]$ cd gitolite-admin/

[[email protected] gitolite-admin]$ ll

total 0

drwxrwxr-x. 2 git git 27 Jan 26 17:29 conf

drwxrwxr-x. 2 git git 23 Jan 26 17:29 keydir

[[email protected] gitolite-admin]$ cd conf/

[[email protected] conf]$ ll

total 4

-rw-rw-r--. 1 git git 77 Jan 26 17:29 gitolite.conf

[[email protected] conf]$ cd ..

[[email protected] gitolite-admin]$ cd keydir/

[[email protected] keydir]$ ll

total 4

-rw-rw-r--. 1 git git 400 Jan 26 17:29 admin.pub

conf/gitolite.conf是添加用户/仓库的配置,keydir存放客户端的公钥。现有的这个admin.pub可以删除了。

六.     配置用户和仓库

打开gitolite.conf可以看到:


[[email protected] ~]$ vim gitolite-admin/conf/gitolite.conf

repo gitolite-admin

RW+     =   admin

repo testing

RW+     =   @all

可以看到现有两个仓库gitolite-admin和testing,gitolite-admin只有admin用户有读写权限,testing则对所有人有读写权限。改一下:


@user = admin aaa_nb

repo gitolite-admin

RW+     =   admin

repo edsserver

RW+     =   @user

上述修改的意思是仓库edsserver对用户组user有读写权限。用户组user中有一个用户aaa_nb,其对应的密钥为在某git客户端上用“ssh-keygen -t rsa -C “用户邮箱名””命令生成的密钥id_rsa.pub改名为aaa_nb.pub(改名是为了和用户名一致,便于分辨管理),然后用Filezilla之类的客户端上传到/home/git/gitolite-admin/keydir目录下。

好了,改了gitolite.conf并上传了aaa_nb.pub后,提交吧:


[[email protected] gitolite-admin]$ git add keydir/aaa_nb.pub conf/gitolite.conf

[[email protected] gitolite-admin]$ git status

# On branch master

# Changes to be committed:

#   (use "git reset HEAD <file>..." to unstage)

#

#       modified:   conf/gitolite.conf

#       new file:   keydir/aaa_nb.pub

#

[[email protected] gitolite-admin]$ git commit -m "new project and user"

[master 3ea654d] new project and user

2 files changed, 4 insertions(+), 2 deletions(-)

create mode 100644 keydir/aaa_nb.pub

[[email protected] gitolite-admin]$ git push origin master

Counting objects: 10, done.

Delta compression using up to 6 threads.

Compressing objects: 100% (5/5), done.

Writing objects: 100% (6/6), 821 bytes | 0 bytes/s, done.

Total 6 (delta 0), reused 0 (delta 0)

remote: Initialized empty Git repository in /home/git/repositories/edsserver.git/

To [email protected]:gitolite-admin

bb5c5f1..3ea654d  master -> master

注意,第一次使用git commit等指令之前,记得先配置user.name和user.email:


[[email protected] gitolite-admin]$ git config --global user.email "[email protected]"

[[email protected] gitolite-admin]$ git config --global user.name "admin"

现在进入respositoeries,可以看到刚才配置的仓库edsserver.git了:


[[email protected] ~]$ cd repositories/

[[email protected] repositories]$ ll

total 0

drwx------. 7 git git 134 Jan 26 18:19 edsserver.git

drwx------. 8 git git 181 Jan 26 18:19 gitolite-admin.git

drwx------. 7 git git 134 Jan 26 18:19 testing.git

[[email protected] repositories]$

总结:以后增加用户或仓库就是用git用户登录服务器后,修改配置文件/home/gitolite-admin/conf/gitolite.conf,添加用户名或仓库名,同时将用户所使用机器上生成的密钥拷贝到/home/gitolite-admin/keydir目录下,然后git add、commit、push等一系列动作即可。

七.     Windows上测试Git客户端

https://www.git-scm.com/download/win 下载git客户端windows版本,一步步缺省安装即可。

在windows资源管理器中想克隆仓库的目录下点击鼠标右键,选择Git Bash Here,弹出的命令行窗口中仍然是首先配置user.name和user.email:


$ git config --global user.email = "[email protected]"

$ git config --global user.name = "aaa_nb"

好了,现在可以clone了:


$ git clone [email protected]:edsserver.git

任何本地修改后依此执行git add .、git commit -m “***”、git push origin master即可。

八.     CentOS7.x上测试Git客户端

同样是先生成公钥:


[[email protected] ~]$ ssh-keygen -t rsa -C "[email protected]"

改名:


[[email protected] ~]$ cd .ssh/

[[email protected] .ssh]$ cp id_rsa.pub aaa_server202.pub

将此pub拷贝到git服务器的/home/gitolite-admin/keydir目录下:


[[email protected] keydir]$ ll

total 12

-rw-rw-r--. 1 git git 400 Jan 26 17:29 admin.pub

-rw-rw-r--. 1 git git 402 Jan 26 18:05 aaa_nb.pub

-rw-rw-r--. 1 git git 402 Jan 26 19:17 aaa_server202.pub

修改gitolite.conf,用户组user中添加aaa_server202。

然后git add .、git commit -m “***”、git push origin master。

好了,回到server202上clone吧:


[[email protected] ~]$ git clone [email protected]:edsserver.git

原文地址:https://www.cnblogs.com/zjd1396/p/10324766.html

时间: 2024-10-09 21:57:26

centos7.x+git+gitolite的相关文章

Git / Gitolite 的应用学习

前面写了svn相关的配置和学习,我们自己目前在用的也是svn.其大多为开发在用,且权限也分配的很精细.所以一般不需要过多的操作什么.备份方面,除了脚本备份,还有共享存储.所以一般也不会有什么问题. 趁这几天顺便把Git也学习下,以防以后会用到这个.Git的好处就不在此多说了,相比svn那也可以罗列很多出来.另一个,git和github结合也是很好的,冲这个也应该学习下. 由于之前的svn用到了很精细的权限控制,所以这里结合Gitolite来一起学习下.所以就分server和client. 一.C

centos7下git --bare服务器简单配置

在czh用户目录下新建 project 用作裸仓库 在czh用户目录下新建 deloy 用作发布地址仓库 进入project目录中运行如下创建一个demo的裸仓库: git init --bare demo.git 然后进入demo.git目录中,在centos7中命令行输入运行 pwd 查看当前位置.例:/home/czh/project/demo.git 在本地 git clone [email protected]的ip:/home/czh/project/demo.git git clo

centos7下git安装

一.git安装 1.查看系统是否已经安装git git --version 2.CentOS7 yum 安装git yum install git 3.安装成功

CentOS7安装gluster分布式文件系统(取名glustervol1),附CentOS7安装git

虚拟机:192.168.2.21 虚拟机:192.168.2.22 首先,把两个虚拟的防火墙关闭,再次根据 上一篇文档:  CentOS7配置本地镜像及安装gluster服务,在两台虚拟机安装gluster. [停止防火墙] sudo systemctl stop firewalld.service      --停止防火墙 sudo systemctl disable firewalld.service   --开机关闭防火墙 [安装apache httpd服务] cat /etc/yum.r

CentOS7 安装git

[git安装] 首先参考博文:CentOS7配置本地镜像及安装gluster服务. 在本地配置yum镜像库. 1. [[email protected] ~]$ sudo  yum --disablerepo=\* --enablerepo=c7-media,offline-extras,offline-storage-gluster38 install git 2.克隆  git clone https://github.com/xfeiwang/go-to-kubernetes go-to-

centos+git+gitolite 安装和部署

本文原文链接:http://www.cnblogs.com/ponyliu/p/5383096.html 一.部署环境 系统:CentOS 6.4x64 最小化安装 IP:192.168.52.131 git默认使用SSH协议,在服务器上基本上不用怎么配置就能直接使用.但是如果面向团队服务,需要控制权限的话,还是用gitolite方便些. 首先用x-shell 工具链接centos 系统 二.安装基础依赖包 [[email protected] ~]#yum install curl-devel

安装centos7与git使用

定下自己的目标"位置" linux一直只是在自学效率差 虚拟机安装centos7 与用实体机的安装有区别.虚拟机安装基本不会出什么问题,但是在实体主机安装是会出现一个问题,检测完成安装时会提示"找不到安装媒体",后面多次搜索后原是centos7安装盘默认是选择第一磁盘,要自己手动修改这路径 u盘/光驱. 由自己迟了报名8天,这个都得重新赶上,之后会重新试行安装centos7,把所有任务过一次 看了git的视频,学习创建了自己git连接到centos7主机(非虚拟机)

Centos 7.X 部署基于Git&amp;Gitolite的分布式版本控制系统

1.简介 1.1 git 简介 Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了.Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码.2005年,为了解决Linux系统的源码开发管理这一问题,Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git,目前世界上最先进的分布式版本控制系统. 2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无

CentOS7 安装git服务器

在CentOS7系统中安装git服务器有两种方法,分别为yum安装和下载git安装包手动安装,这篇文章只有下载git安装包手动安装方法. 方法一:使用yum安装 暂无 方法二:下载git安装包手动安装 前提 以root用户登录终端 如果前期使用yum安装过git并且失败的话,请使用命令:yum remove git 具有git安装包,如果没有的话可以去 https://www.kernel.org/pub/software/scm/git/ 下载,找到自己想要安装的git版本,以.tar.gz结