简单搭建一个私有Git服务器

文章目录

  • 1. 前言
  • 2. 安装git
  • 3. 创建git用户
  • 4. 创建证书登录
  • 5. 创建一个Git仓库
  • 6. 禁用shell登录
  • 7. 试试看
  • 8. 扩展
  • 参考文献

本文是对 廖雪峰官方网站 - 搭建Git服务器 的实践。

常用的git使用方法 GIT CHEAT SHEET。

1. 前言

我是用我的云服务器来作为Git服务器的。有一点需要注意,使用的是该云服务器的公网ip哦。

2. 安装git

# ubuntu系统
~$ sudo apt-get install git
# centos系统
~$ sudo yum install git

3. 创建git用户

git用户是专门用来运行git服务的。

~$ sudo adduser git

4. 创建证书登录

将所有需要用到这个Git仓库的用户的SSH公钥保存到Git服务器中的/home/git/.ssh/authorized_keys。刚开始.ssh这个目录可能并不存在,创建一个就行了,然后把所有用户的公钥(通常为/home/用户名/.ssh/id_rsa.pub)保存在authorized_keys文件中即可。

若你的电脑中没有/home/用户名/.ssh/id_rsa.pub,那么需要生成。

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

5. 创建一个Git仓库

首先,要明白的是,Git仓库到底是个什么东西? 归根结底就是一个目录而已。

创建一个/home/git/myGitServer/sample.git目录作为一个仓库。

~$ sudo git init --bare sample.git

通过--bare参数创建的是一个裸仓库。裸仓库就是没有工作区的仓库。这是因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。

修改sample.git目录的权限

~$ sudo chown -R git:git sample.git

6. 禁用shell登录

为什么要禁用shell登录?这是出于安全方面的考虑。git用户应该只允许使用git-shell,而不能使用/bin/bash。在/etc/passwd文件中找到git用户,把/bin/bash直接修改成/usr/bin/git-shell

~$ sudo vim /etc/passwd
# 将 git:x:1001:1001:,,,:/home/git:/bin/bash 改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样git用户可以正常通过ssh使用git(因为git pushgit pull这些操作都是基于ssh协议的),但无法登录shell。

7. 试试看

现在就可以将这个Git服务器当作github来使用了。在你的电脑上使用git来克隆服务器上的sample.git中的代码。

sjl@DESKTOP-BL7A7IA:~$ git clone git@Git服务器的ip:/home/myGitServer/sample.git
Cloning into 'sample'...
[email protected]'s password:
warning: You appear to have cloned an empty repository.

让我们用ssh来连接看看

sjl@DESKTOP-BL7A7IA:~$ ssh [email protected]

[email protected]'s password:
Last login: Wed Jun 10 18:33:37 2020
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to x.113..189.175 closed.

很明显,使用git用户登录失败了,那么使用root用户试试呢

sjl@DESKTOP-BL7A7IA:~$ ssh [email protected]
[email protected]'s password:
Last failed login: Wed Jun 10 20:51:31 CST 2020 from 218.85.119.92 on ssh:notty
There were 278 failed login attempts since the last successful login.
Last login: Wed Jun 10 18:33:52 2020 from 106.39.148.254

登录成功了。

现在可以将该仓库作为的你的远程仓库使用了。

~$ git remote add mygithub git@Git服务器的ip:/home/myGitServer/sample.git

~$ git remote
mygithub

如果不需要私有的Git服务器,那么直接使用Github就好了,如果嫌Github网速慢,使用国内版 Gitee
要方便管理公钥,用Gitosis;
要像SVN那样变态地控制权限,用Gitolite。

8. 扩展

有些同学可能还知道另外一个代码托管网站 GitLab,那么GitLab和GitHub有啥区别呢?

下面这一段来自博客 GitHub与GitLab的区别以及GitLab的搭建与使用

GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(https://github.com/gitlabhq/gitlabhq 基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。

我们前面所搭建的Git服务器,只能push,pull代码,没有其他注册用户等功能,说直白点就是没有一个像GitHub这样的网站来管理,因此才需要用到GitLab。要搭建GitLab还是参考这篇博客 GitHub与GitLab的区别以及GitLab的搭建与使用

参考文献

[1] 廖雪峰官方网站 - 搭建Git服务器
[2] Git官方网站的Book教程 可以选择中文哦
[3] GitHub与GitLab的区别以及GitLab的搭建与使用

你可能感兴趣的:(Git)