http://imerc.xyz/2015/11/13/Ubuntu-14-04%E4%B8%8AGit%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%90%AD%E5%BB%BA/

工具与平台

平台: Ubuntu Server 14.04

工具: gitolite

搭建步骤

1、安装 git 和 openssh-server

假设服务器系统 Ubunut 上有一个名为 ubuntu (AWS的Ubuntu默认管理员用户) 的管理员用户,在 ubuntu 用户下安装 git 和 openssh-server

sudo apt-get install git
sudo apt-get install openssh-server

2、创建 git 用户

创建一个名为 git 的用户,用于管理 git:

# 添加一个名为 git 的用户,创建同名用户组,设置其可用 shell 登录,shell是 /bin/bash

sudo adduser --system --shell /bin/bash --group git

git这个名字是可以更改的,但一般都是取名为 git。

有些系统只允许特定的用户组(ssh用户组)可以通过 ssh 协议登录,所以将 git 用户添加到 ssh 用户组中:

sudo adduser git ssh

给 git 用户设置密码:

sudo passwd git

AWS上登录只能使用密钥,所以不能设置密码。
adduser时增加--disabled-password参数。

3、在 ubuntu 用户下生成 ssh key

还是在 ubuntu 用户下,生成 ssh key:

ssh-keygen -t rsa   # 以 rsa 方式加密

如果不想改变默认存储路径,不设置 ssh 通信时的密码,只要一路回车即可。
当出现这个画面,表示 ssh key 已经生成成功。

默认 ssh key 存储在 ~/.ssh 文件夹中,我们将其中的公钥 id_rsa.pub 复制到 git 用户主目录中待用,并重命名为 admin.pub:

sudo cp ~/.ssh/id_rsa.pub /home/git/admin.pub

4、在 git 用户下安装 gitolite

切换到 git 用户:

su git

AWS上因为git用户没有设置密码,必须使用:sudo su git

切换到 /tmp 目录下,从 github 上克隆 gitolite 的源码:

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

在 git 用户的主目录下新建 bin 文件夹,准备用来安装 gitolite:

cd ~
mkdir bin

安装 gitolite:

/tmp/gitolite/install -to ~/bin

利用 admin.pub 来初始化 gitolite 初始仓库:

~/bin/gitolite setup -pk ~/admin.pub

如果出现以下信息,表明初始化成功

输出的信息告诉我们,gitolite 帮我们初始化了两个空仓库:gitolite-admin.git 和 testing.git。其中 testing.git 只是生成了给我们做测试之用,而 gitolite-admin.git 是用来管理的,非常重要。
由于我们用 ubuntu 用户的的 ssh key 来初始化 gitolite 初始仓库,因此 ubuntu 用户就是管理员,它可以用来增加删除仓库,添加用户,进行权限管理等。
切换到 ubuntu 用户下,尝试用 ssh 登录 git 用户:

su ubuntu  # 可以使用exit命令切回ubuntu用户
ssh git@127.0.0.1

如果出现以下信息,则表明,git服务器基本上搭好了。

上面的信息表示 ubuntu 用户目前对 gitolite-admin 和 testing 仓库有读写操作权限。
ssh连接自动关闭,这是 gitolite 所起的作用,禁止 git 用户使用 shell 登录,以防没有权限的人登录 git 用户破坏里面的代码仓库。

仓库管理

由于 ubuntu 用户是 gitolite 的管理员,因此,我们在 ubuntu 用户下,便可以对仓库进行管理。管理方式也是通过 git clone /git push 等操作的来进行的。
首先将 gitolite-admin.git 仓库克隆下来:

git clone git@127.0.0.1:gitolite-admin.git

由上图可知,gitolite-admin 文件夹下面还有两个文件夹 conf 和 keydir。其中 conf 文件夹下面存放了仓库配置文件 gitolite.conf 。keydir 里面存放各个用户的 ssh 公钥文件。
打开 gitolite.conf ,里面的内容如下图所示,每个repo表示一个仓库,下面表示特定的用户有特定的权限。此处可以用来进行权限控制。

假设此时有两个用户 Tom 和 Jack 需要利用这个git服务器合作开发一个名为 Lake 的项目。则首先 Tom 和 Jack 需要在它们各自的电脑上生成 ssh key,然后将其中的公钥 id_rsa.pub 改名为 Tom.pub 和 Jack.pub ,并添加到服务器上 ubuntu 用户下的 gitolite-admin/keydir/ 目录下。
然后管理员需要编辑 gitolite.conf 文件,创建新的仓库,并给 Tom 和 Jack 读写的权限。

现在这些配置其实还不能生效,只有把本地(ubuntu 用户下)对 gitolite-admin 的修改再推送到远程服务器(git 用户下),修改才能生效:

# 在 ~/gitolite-admin/目录下
git add -A
git commit -m "create repo:Lake, add user:Tom&Jack"
git push origin master

这样,Tom 和 Jack 就对远程仓库 Lake 有了读写权限,就可以进行合作开发了。

客户端使用

客户端使用需先编辑 ~/.ssh/config 文件,如此文件不存在,先创建。然后输入以下内容:

Host 服务器别名
    HostName AWS的开放域名
    User git                            # git是服务器上安装gitolite的用户名
    IdentityFile ~/.ssh/id_rsa   # 指定的私钥要和服务器上git里keydir目录下的公钥相对应

配置config后就可以使用git命令。

git clone git@服务器别名:testing.git

AWS ec2的ubuntu14.04上安装git服务的更多相关文章

  1. Ubuntu14.04上安装tftpd服务

    首先sudo apt-get install tftpd-hpa,  tftp-hpa 然后sudo vim /etc/default/tftpd-hpa 配置文件如下 TFTP_USERNAME=& ...

  2. [译]How to Install Node.js on Ubuntu 14.04 如何在ubuntu14.04上安装node.js

    原文链接为 http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/ 由作者Jacob Nicholson 发表于October ...

  3. 在Ubuntu 18.04上安装Git

    步骤1.首先,通过运行以下命令确保您的系统和apt包列表完全更新: apt-get update -yapt-get upgrade -y 第2步.在Ubuntu 18.04上安装Git. 现在让我们 ...

  4. 在Ubuntu 14.04 上安装 FTP 服务

    1. sudo apt-get update 2. sudo apt-get install vsftpd 3. adduser sammy Assign a password when prompt ...

  5. Ubuntu14.04上安装pip的方法

    在Ubuntu14.04上,建议通过下面的方法安装,这是一种通用的方法,也适用于Windows,当然在Windows下 手动下载下来就行了 wget https://bootstrap.pypa.io ...

  6. 在ubuntu14.04上搭建OpenVPN服务

    简介 在连接了不可信的网络环境后,让手机或者计算机安全的访问互联网,使用虚拟专用网络(Virtual Private Network,VPN)是一个解决办法.OpenVPN是一个SSL VPN完整解决 ...

  7. Caffe初学者第一部:Ubuntu14.04上安装caffe(CPU)+Python的详细过程 (亲测成功, 20180524更新)

    前言: 最近在学习深度学习,最先要解决的当然是开源框架的环境安装了.之前一直在学习谷歌的Tensorflow开源框架,最近实验中需要跟别人的算法比较,下载的别人的代码很多都是Caffe的,所以想着搭建 ...

  8. 在ubuntu14.04上安装openstack mitaka

    最近在工作环境安装部署了juno版本,在GE口测试网络性能不太满意,发现mitaka版本支持ovs-dpdk,于是抽时间安装实验一番. 参考官网的安装文档,先准备将mitaka版本安装好再配置ovs. ...

  9. 在Ubuntu14.04上安装WordPress4搭建技术博客

    1.安装LAMP环境 1.1 安装Apache2 1.2 安装MySQL5 1.3 安装PHP5 1.4 安装phpMyAdmin 2.初始化数据库 3.下载并配置WordPress 4.配置Apac ...

随机推荐

  1. LeetCode 852. 山脉数组的峰顶索引 (二分)

    题目链接:https://leetcode-cn.com/problems/peak-index-in-a-mountain-array/ 我们把符合下列属性的数组 A 称作山脉: A.length ...

  2. ASP.NET一般处理程序之网站请求过程

  3. npx是什么

    npx是一个执行npm软件包的二进制文件,通俗的讲,他可以执行npm的一些指令 在npm>5.2.0 的时候npm里面就集成了npx 比如npx webpack 他会执行node_modules ...

  4. 《javascript正则表达式迷你书》笔记

    字符匹配攻略 横向匹配--通过量词 {m,n} {m,} {m} ? + * 贪婪匹配 后面跟?号 惰性匹配 纵向匹配--通过字符组 \d \D \w \W \s \S . \w表示[0-9a-zA- ...

  5. 13:IO流

    IO简介 继承结构 整体架构 常用内容 分类 根据处理的数据单位不同,分为字节流和字符流:in/out相对于程序而言的输入(读取)和输出(写出)的过程,即根据数据的流向不同称为输入流和输出流 字符流的 ...

  6. java实现判断两个二叉树是否相同

    1.定义树节点类:节点值.左节点.右节点.构造器 2.先判断树是否为空的情况 3.树不为空时,判断节点所指的值是否相等,若相等,则递归判断节点的左右节点是否相同,相同则返回true /** * Def ...

  7. 2_abstractions

    2. Up and down the level of abstraction In this chapter, we'll travel up and down the level of abstr ...

  8. 模块简介与matplotlib基础

    模块简介与matplotlib基础 1.基本概念 1.1数据分析 对已知的数据进行分析,提取出一些有价值的信息. 1.2数据挖掘 对大量的数据进行分析与挖掘,得到一些未知的,有价值的信息. 1.3数据 ...

  9. yolov3 进化之路,pytorch运行yolov3,conda安装cv2,或者conda安装找不到包问题

    yolov3 进化之路,pytorch运行yolov3,conda安装cv2,或者conda安装找不到包问题 conda找不到包的解决方案. 目前是最快最好的实时检测架构 yolov3进化之路和各种性 ...

  10. 跨AppDomain通信

    public class AppDomainTest : MarshalByRefObject { public string TestMethodStr(string srcAppDomain) { ...