在Linux CentOS下搭建Git服务器

步骤分为:

安装Git → 创建Git用户 → 创建Git远程仓库 → 配置ssh密钥 → 客户端clone测试一下

一、安装Git

$ su root                    #切换到root用户名
$ yum install git             #用该命令执行git安装

运行结果如下:

[user@centos-linux ~]$ su root
密码:
[root@centos-linux user]$ yum install -y git
已加载插件:fastestmirror, langpacks
base                                                     | 3.6 kB     00:00     
extras                                                   | 2.9 kB     00:00     
updates                                                  | 2.9 kB     00:00     
updates/7/x86_64/primary_db                                | 8.0 MB   00:02     
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 git.x86_64.0.1.8.3.1-23.el7_8 将被 安装
--> 正在处理依赖关系 perl-Git = 1.8.3.1-23.el7_8,它被软件包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在处理依赖关系 perl(Term::ReadKey),它被软件包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在处理依赖关系 perl(Git),它被软件包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在处理依赖关系 perl(Error),它被软件包 git-1.8.3.1-23.el7_8.x86_64 需要
--> 正在检查事务
---> 软件包 perl-Error.noarch.1.0.17020-2.el7 将被 安装
---> 软件包 perl-Git.noarch.0.1.8.3.1-23.el7_8 将被 安装
---> 软件包 perl-TermReadKey.x86_64.0.2.30-20.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package                架构         版本                      源          大小
================================================================================
正在安装:
 git                    x86_64       1.8.3.1-23.el7_8          base       4.4 M
为依赖而安装:
 perl-Error             noarch       1:0.17020-2.el7           base        32 k
 perl-Git               noarch       1.8.3.1-23.el7_8          base        56 k
 perl-TermReadKey       x86_64       2.30-20.el7               base        31 k

事务概要
================================================================================
安装  1 软件包 (+3 依赖软件包)

总下载量:4.5 M
安装大小:22 M
Downloading packages:
(1/4): perl-Error-0.17020-2.el7.noarch.rpm                 |  32 kB   00:00     
(2/4): perl-Git-1.8.3.1-23.el7_8.noarch.rpm                |  56 kB   00:00     
(3/4): perl-TermReadKey-2.30-20.el7.x86_64.rpm             |  31 kB   00:00     
(4/4): git-1.8.3.1-23.el7_8.x86_64.rpm                     | 4.4 MB   00:01     
--------------------------------------------------------------------------------
总计                                               2.8 MB/s | 4.5 MB  00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 1:perl-Error-0.17020-2.el7.noarch                           1/4 
  正在安装    : perl-TermReadKey-2.30-20.el7.x86_64                         2/4 
  正在安装    : perl-Git-1.8.3.1-23.el7_8.noarch                            3/4 
  正在安装    : git-1.8.3.1-23.el7_8.x86_64                                 4/4 
  验证中      : git-1.8.3.1-23.el7_8.x86_64                                 1/4 
  验证中      : 1:perl-Error-0.17020-2.el7.noarch                           2/4 
  验证中      : perl-Git-1.8.3.1-23.el7_8.noarch                            3/4 
  验证中      : perl-TermReadKey-2.30-20.el7.x86_64                         4/4 

已安装:
  git.x86_64 0:1.8.3.1-23.el7_8                                                 

作为依赖被安装:
  perl-Error.noarch 1:0.17020-2.el7        perl-Git.noarch 0:1.8.3.1-23.el7_8   
  perl-TermReadKey.x86_64 0:2.30-20.el7   

完毕!

可以查看一下git的版本:

[root@centos-linux user]$ git --version
git version 1.8.3.1

二、 增加一个git账户

为了管理的方便,在linux下面增添一个 “git” 账户。

 $ adduser git         #增加用户git

运行结果如下:

[root@centos-linux user]$ id git                   #查看git用户是否存在
id: git: no such user
[root@centos-linux user]$ useradd git              #添加用户
[root@centos-linux user]$ passwd git               #为用户创建密码,密码多余8个字符,不能是回文
                                                   #设置密码之后每次都需要输入密码

三、创建一个git远程仓库

  1. 进入/home/git(也可以自己另外指定用户文件夹)目录下面,创建一个叫做tmp.git的空git仓库
  2. 初始化远程仓库
 $ sudo git init --bare tmp.git        # tmp.git 为仓库名,可自行更换,但是后缀需为 .git

运行结果如下:

[root@centos-linux user]$ cd git
bash: cd: git: 没有那个文件或目录
[root@centos-linux user]$ cd ..
[root@centos-linux home]$ cd git
[root@centos-linux git]$ mkdir tmp.git                    # 创建文件
[root@centos-linux git]$ sudo git init --bare tmp.git     # 初始化
初始化空的 Git 版本库于 /home/git/tmp.git/
[root@centos-linux git]$ ll                               # 查看文件夹拥有者
总用量 4
drwxr-xr-x. 7 root root 4096 5月  12 09:56 tmp.git        # 这里拥有者是root用户

4.配置ssh密钥

一般说来,系统是有预装ssh的,如果没有自行安装一下:
$yum install ssh

然后开启ssh服务:
$service sshd restart

在git目录下找找看有没有 .ssh文件,没有的话新建一个 .ssh文件:
$mkdir .ssh

然后进入.ssh文件夹,在文件夹下面新建一个文件:
touch authorized_keys

运行示例如下:

[root@centos-linux git]$ yum install ssh
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
没有可用软件包 ssh。
错误:无须任何处理
[root@centos-linux git]$ service sshd restart
Redirecting to /bin/systemctl restart  sshd.service
[root@centos-linux git]$ ls                           # 查看git文件内容,有没有.ssh
tmp.git
[root@centos-linux git]$ mkdir .ssh                   # 新建文件夹.ssh
[root@centos-linux git]$ cd .ssh                      # 打开文件夹
[root@centos-linux .ssh]$ touch authorized_keys       # 新建文件authorized_keys

然后把客户端生成的ssh密钥复制粘贴到这个文件 authorized_keys 里面。

服务器端也是要生成密钥的,所以要执行:
$ ssh-keygen -t rsa #生成两个文件(id_rsa和id_rsa.pub)

服务器端运行示例如下:
我好几次生成了秘钥但是没有这两个文件,最后在文件命名那里直接输入id_rsa才生成,
密码是服务器端git账户的登入密码,密码如果不想每次都输的话就回车不填

#不能生成的一段
[root@centos-linux .ssh]$ ssh -keygen -t rsa
Bad escape character 'ygen'.
[root@centos-linux .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f1:1b:43:00:59:7f:e2:85:c1:1f:d8:fd:6c:a2:c5:51 root@centos-linux.shared
The key's randomart image is:
+--[ RSA 2048]----+
|      .+o..o . .E|
|      .  oooo o  |
|        . =.oo + |
|         = +. + +|
|        S =  o o |
|           +.    |
|          .      |
|                 |
|                 |
+-----------------+
[root@centos-linux .ssh]$ ls
authorized_keys

# 能够生成:
[root@centos-linux .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
29:8d:44:a2:25:c9:63:30:e9:49:bf:27:5c:a6:76:9c root@centos-linux.shared
The key's randomart image is:
+--[ RSA 2048]----+
|o+..o .          |
|.o=+ o           |
|o.+.  .          |
| o . + o .       |
|  . * + S        |
|   * E .         |
|  . +            |
|                 |
|                 |
+-----------------+
[root@centos-linux .ssh]$ ls
authorized_keys  id_rsa  id_rsa.pub

我们随便找到一个linux系统,同样的执行命令:
ssh-keygen -t rsa
然后查看id_rsa.pub文件:
$cat id_rsa.pub
最后把客户端生成的ssh密钥复制粘贴到服务器的文件 authorized_keys 里面:

客户端查看密钥示例:

[root@centos-linux .ssh]$ cat id_rsa.pub                    # 查看密钥并复制这一段内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9sw4vDskWsMt35TIn+wMq4uO/VwCggY4FjGZimNkopVBm
CPf4tr/RtVsbZTaPhTf6nPIFNj/V1a5/EipRnviG1gVgK0Ng0CWB2GNbylNOU2cEPcXUEVBx//KBEkpilIEf
/+LbXzb1+/5JhTvmeyGiNc6TWKCUDygIQdaMx57qWVtNJ6hZsEjgk7iJ/ZgYp6NzwsjowtsB/xSL59N8Pywb
6NXssaETKnvsKW6B42n/uyL1HvYVQxzxJGfbgWK0fuIo97lxkUJKXaOdLItwpVIEyg5i3Fb8fbhtAu+GwXvJ
dXLcojP5a/JUrEovn+bEhBya/7uJ/OKhY8AWx4LbSiYn root@centos-linux.shared

粘贴到服务器authorized_keys中示例:

[root@centos-linux .ssh]$ vi authorized_keys          # 运行之后按a进入编辑模式,Esc结束,ZZ退出
[root@centos-linux .ssh]$ cat authorized_keys         # 查看内容是否粘贴完毕
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9sw4vDskWsMt35TIn+wMq4uO/VwCggY4FjGZimNkopVBm
CPf4tr/RtVsbZTaPhTf6nPIFNj/V1a5/EipRnviG1gVgK0Ng0CWB2GNbylNOU2cEPcXUEVBx//KBEkpilIEf
/+LbXzb1+/5JhTvmeyGiNc6TWKCUDygIQdaMx57qWVtNJ6hZsEjgk7iJ/ZgYp6NzwsjowtsB/xSL59N8Pywb
6NXssaETKnvsKW6B42n/uyL1HvYVQxzxJGfbgWK0fuIo97lxkUJKXaOdLItwpVIEyg5i3Fb8fbhtAu+GwXvJ
dXLcojP5a/JUrEovn+bEhBya/7uJ/OKhY8AWx4LbSiYn root@centos-linux.shared

一个密钥一行,一个密钥对应一个客户端

五、客户端clone测试一下

我们进入客户端主机(我用的是另一台云主机,也是linux系统的,如果是windows的话,需要下载git for windows版本的)。

在用户目录下新建一个test文件夹用来存放等下要clone的仓库:

进入test文件夹,执行:$git clone git@serveraddress:tmp.git

只要想新增客户端,只要生成ssh密钥,然后把密钥复制到服务器端下的.ssh/authorized_keys文件下,客户端就可以连接上git远程仓库了。

文章引用:
https://blog.csdn.net/qq_32685139/article/details/52426155
https://blog.csdn.net/fenlin88l/article/details/89151075

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值