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. vnode

    获取vnode对象 vm.$slots对象下的所有值 vm.$scopedSlots对象的值返回一个函数,该函数执行后返回vnode对象 directives自定义指令中钩子函数的参数3和参数4,例如 ...

  2. HDU6537

    题意 英文 做法 将\(a_i>1\)的限制去掉,定义\(g(n,k)\) 显然有\[ans=\sum\limits_{i=0}^{k}(-1)^i \binom{k}{i}g(n,k-i)\] ...

  3. 用 ArcMap 发布 ArcGIS Server Feature Server Feature Access 服务

    1. 安装Desktop, 2. 安装ArcGIS Server 3. 安装PostgreSQL 9.5 从 C:\Program Files (x86)\ArcGIS\Desktop10.5\Dat ...

  4. Java多线程之synchronized和volatile

    概述 用Java来开发多线程程序变得越来越常见,虽然Java提供了并发包来简化多线程程序的编写,但是我们有必要深入研究一下,才能更好的掌握这块知识. 本文主要对Java提供的底层原语synchroni ...

  5. Python之旅第五天(习题集合)

    4天时间,虽然上着班,但是学的东西还是有点多,而且晚上看的比较容易忘,所以今天是习题模式,正好教程也是这么要求的,本来以为时间不长,没想到还是很崩溃啊.不多说,上干货. #关于随机产生验证码同时验证用 ...

  6. AduSkin - UI

    追求极致,永臻完美 A Beautiful WPF Control UI 一款简单漂亮的WPF UI,融合部分开源框架的组件,为个人定制的UI,可供学者参考. Nuget 搜索"AduSki ...

  7. 关闭 APIPA

    遇到的问题:我在网卡2上设置了静态ip,可是出现了一个奇怪的ip地址169.254.*.*,如下图. 解决方法:关闭APIPA功能 按照下述的做法,自己在win7企业版上尝试了下,有效.不再出现169 ...

  8. webpack 代理问题

    devServer host: '0.0.0.0' 或者是ip 形式的 ,proxy 中 的 target,host 需要为ip形式的地址, host: 'aa.a.com' 为字符形式的 ,prox ...

  9. vim编辑器-删除命令

    dd:删除游标所在的一整行(常用)   ndd:n为数字.删除光标所在的向下n行,例如20dd则是删除光标所在的向下20行   d1G:删除光标所在到第一行的所有数据   dG:删除光标所在到最后一行 ...

  10. Selenium3+python自动化012+日志logging基本用法、高级用法

    1.关键字: login 登录 log 日志 logging python日志模块 2.什么叫日志: 日志用来记录用户行为或者代码的执行过程 3.日志使用的地方: 1.排错的时候需要打印很多细节来帮助 ...