学习链接:博客园廖雪峰

一 前言

前面已经贴了两个链接,为什么还要再写一篇呢,因为可能由于个人能力问题,我觉得上面两篇写的都有点简略,有些地方不太好理解,并不能一次性成功搭建,所以想根据自己踩过的坑再写一篇更详细的。所以如果有用户搜到了这篇文章且看完没有成功搭建,请评论中回复让我知道原因继续完善,谢谢!

另外,本次安装不涉及权限管理,因为只是自己测试,还未用于生产环境。

二 准备环境

本次测试使用两台虚拟机,一台Ubuntu系统作为Git服务器(以下称为服务器),一台CentOS系统作为客户端(以下称为客户端)

三 配置服务器

第一步:检查服务器是否安装了ssh服务,这个没记错的话Ubuntu是自带有的,如果没有安装即可

第二步:安装git,具体方法请看官网文档,包含了Ubuntu和CentOS系统的安装方法,安装完毕在终端中执行git --version命令,如正常输出版本号,说明安装成功。

第三步:修改hsots配置,在hosts文件中将服务器的IP指向gitserver,将客户端的IP指向gitclient,如下图:

第四步:在服务器上创建git用户,

sudo useradd git

然后赋予管理员权限,即将其加到/etc/sudoers文件中,添加时参考root的配置即可

第五步:在服务器上创建代码仓库,这里我在/home/git/repo下执行命令:

git –bare init /home/git/sample.git

成功执行后在服务器上创始了sample.git文件夹,如下图:

然后将该文件夹所有者设为git,执行如下命令:

sudo chown -R git:git sample.git

到此,Ubuntu服务器的配置完毕,接下来配置客户端。

四 客户端配置

第一步:同样,在客户端确认ssh是否有安装,并安装git

第二步:修改客户端的hosts文件,将服务器的IP指向gitserver

第三步:执行ssh-keygen -t rsa命令生成密钥,如下图:

注意,不要输入文件名,一直回车就好,不要输入任何内容,全部使用默认配置,成功后会自动在用户的home目录下创建.ssh文件夹,并将生成的公钥和密钥放到这个文件夹下。这里是要设置无密码登录服务器,因为服务器的密码不可能让所有人知道,提交代码时使用密钥进行身份验证

第四步:将.ssh文件夹下生成的id_rsa.pub文件上传到服务器git用户home目录(/home/git)下,在服务器上使用git用户登录,查看home目录下是否有.ssh文件夹,如果没有,手动创建,如果有进入其中查看是否有名为authorized_keys文件,如果没有,同样手动创建即可。确认authorized_keys文件存在后执行cat ../id_rsa.pub>>authorized_keys命令,将客户端用户公钥导入到验证文件。

第五步:在客户端上新建存储代码的文件夹,进入该文件夹,执行git clone git@gitserver:/home/git/repo/sample.git命令,该命令的作用是使用git用户身份从服务器拉取代码,若可正常拉代码且无需输入密码,说明搭建成功。之后就可以像公共仓库一样进行代码管理了。

五 善后

所有用户的公钥导入完毕后,最好禁用git用户登录权限(git用户应该只用于代码管理,不用作其它事情,如果再要导入新的用户公钥可以用其它有管理员权限的帐户),具体做法是修改/etc/passwd文件中git的设置,如下图:

将命令执行环境设成git的shell,/usr/bin/git-shell而非/bin/bash,这样git用户无法通过ssh工具如putty远程登录系统了,但是可以通过ssh在git中进行各种操作。

Ubuntu 18.04搭建Git服务器的更多相关文章

  1. ubuntu 18.04 搭建flask服务器(大合集,个人实操)

    ubuntu 18.04 搭建flask服务器(大合集) Ubuntu python flask 服务器 本次使用的Ubuntu版本为:Ubuntu 18.04.5 LTS (GNU/Linux 4. ...

  2. 【Ubuntu 18.04 搭建VNC服务器】

    https://www.jianshu.com/p/f58fe5cdeb5f 桌面共享 Ubuntu 18.04自带桌面共享,可以将物理桌面共享给VNC.但是无法创建新的桌面. 具体参考 https: ...

  3. 在 Ubuntu 18.04 LTS 无头服务器上安装 Oracle VirtualBox

    作者: Sk 译者: LCTT qhwdw | 2018-10-12 01:59 本教程将指导你在 Ubuntu 18.04 LTS 无头服务器上,一步一步地安装 Oracle VirtualBox. ...

  4. Ubuntu 18.04安装Samba服务器及配置

    Ubuntu 18.04安装Samba服务器及配置 局域网下使用samba服务在Linux系统与Windows系统直接共享文件是一项很方便的操作.以Ubuntu为例配置samba服务,Linux服务器 ...

  5. Ubuntu 12.04 搭建TFTP服务器

    吐槽先:在Ubuntu上搭建TFTP服务器,网上搜到一堆资料,可惜基本都是部分能用,至于哪些部分能用还要自己摸索着试出来,郁闷之情仅次于找不到任何资料…… ---------------------- ...

  6. 如何在Ubuntu 18.04安装Git

    在Ubuntu 18.04安装Git 更新apt包列表 apt-get update -y apt-get upgrade -y 安装Git: apt install git 检查Git版本 git ...

  7. ubuntu 16.04 搭建git小型服务器

    最近搭建了一个小型git服务器,由于网上资料鱼龙混杂,让我着实踩了不少地雷.做一个记录,以备不时之需. 一 搞清楚你的需求? 假如你要搭建的服务器只供几十个人使用,并且没有专门的网管服务的话,切记,一 ...

  8. CentOS 6.9/Ubuntu 16.04搭建OpenVPN服务器以及客户端的使用

    说明: 1.发现一个很奇怪的现象,CentOS和Ubuntu有着对用户不同的管理理念,比如CentOS中安装一切软件都是以root优先(su -),而Ubuntu则以当前用户优先,安装软件以sudo开 ...

  9. 烂泥:ubuntu 14.04搭建OpenVPN服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司分部需要连接公司内部的服务器,但是该服务器只允许公司内部的网络访问. 为了解决这个问题,打算使用VPN.对于VPN以前使用最多的是PPTP这个解决方案 ...

随机推荐

  1. 201771010134杨其菊《面向对象程序设计java》第十二周学习总结

    第十二周学习总结 第一部分:理论知识 内容概要: AWT与Swing简介:框架的创建:图形程序设计: 显示图像: 1.AWT组件: 2.Swing 组件层次关系 3 .AWT与Swing的关系:大部分 ...

  2. laravel和lumen数据库链接错误_FatalErrorException Call to a member function connection

    FatalErrorException in Model.php line 3339: Call to a member function connection() on null 挺简单的一个lum ...

  3. NC 数据库操作

    一.后台数据库操作方法(private端): 1.以下为后台查询方法 BaseDAO dao = new BaseDAO();//只能在private端使用 String querySql=" ...

  4. How to get raw request body in ASP.NET?

    protected void Page_Load(object sender, EventArgs e) { MemoryStream memstream = new MemoryStream(); ...

  5. oo第八次作业

    oo第八次作业 第五次作业分析: 1.度量图: 2.类图: 第五次作业由于是第一次接触多线程,所以导致自己的经验不足,因此最终也没有完成作业,到最后任然不能实现三部电梯的有效调度,所以导致了这次作业的 ...

  6. PHP常用180函数总结【初学者必看】

    数学函数 1.abs(): 求绝对值 <span style="font-size: 14px;">$abs = abs(-4.2); //4.2<br>& ...

  7. zookeeper名字服务

    10.12.67.31 #!/bin/shmkdir -p /data/zk-install/cd /data/zk-install/wget -q -O ons_agent-1.0.5.tar.gz ...

  8. python语法之函数2

    高阶函数: def f(n): return n*n def foo(a,b,func): func(a)+func(b) ret=func(a)+func(b) return ret foo(1,2 ...

  9. jquery学习总结12-24

    一.jquery操作类的相关方法 1.addClass()方法可以为DOM元素添加类,若添加多个类中间可以用空格连接 2.removeClass()方法可以为DOM元素删除类,若删除多个类中间可以用空 ...

  10. 数据结构与STL容器

    1.静态数组 静态数组就是大小固定不能扩展的数组,如C中普通数组.C++11中array. 2.动态数组 动态数组的空间大小在需要的时候可以进行再分配,其代表为vector.由于数组的特点,在位置0插 ...