August Rush

一个还在努力成长的小火汁!

游龙当归海,海不迎我自来也。

We create our own demons.

You can reach me at augustrush0923@gmail.com
「我的CICD之旅」Git服务的搭建
发布:2023年07月15日 | 作者:augustrush | 阅读量: 1011

「我的CICD之旅」- 首先要搭建起Git服务。

首先准备两个虚拟机,一个作为server端,一个作为client端。「Git服务本身没有服务端和客户端的区别,只是方便理解」

平常一直在用CentOS,所以这次以CentOS系统为例。其他Linux系统方法与此大同小异。

服务端:CentOS 8

客户端:CentOS 8

服务端配置

第一步:安装Git

首先打开终端命令行并切到root权限进行操作:

sudo -s

通过yum安装:

yum install -y git

可以通过运行如下命令判断git是否已经安装:

git --version

同时需要检查是否安装openssh-serveropenssh-client这两个软件。

yum list installed | grep openssh*

第二步:创建新用户提供Git服务

创建一个新用户,用于执行Git服务相关命令。

sudo adduser git
sudo passwd git

第三步:初始化一个Git仓库

下面开始新建git仓库,位置随意,我选地仓库存放目录为/srv下面,仓库名为gitrepo.git

git init --bare /srv/gitrepo.git

因为当前用户是root,为了让后面git专用账户能够操作仓库目录,我们需要把仓库目录授权给git:

chown -R git:git /srv/gitrepo.git

客户端操作

第一步:安装git

同服务端操作一样,不在阐述。

第二步:克隆服务端仓库

git clone git@10.211.55.10:/srv/gitrepo.git

此时代表客户端可与服务端正常交流。

第三步:配置git提交信息

为例客户端进行后续的提交操作,我们还需要注明当前机器的用户信息,命令如下:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

第四步:文件修改并同步到Git服务器

配置完成后,我们就进入实际使用环节了。

首先我们在gitrepo目录先创建几个文件:

touch a.txt b.txt

然后提交到服务端:

git add .
git commit -m "test push"
git push

其他配置

禁用git账户登录shell

因为git账户只用于执行Git相关命令,不应该有别的权限。如果遭受黑客攻击,这将是一场灾难。此时为了安全考虑,需要禁用git账户的shell。可以通过修改/etc/passwd文件:

把其中的

git/:x/:1001:1001::/home/git:/bin/bash

修改为

git/:x/:1001:1001::/home/git:/usr/bin/git-shell

其中 /usr/bin/git-shell 的路径可以通过命令 which git-shell 获得。

使用公钥和私钥实现免密效果

上面我们使用的过程中每次都需要输入git用户的密码才能和服务端交互,这样会很麻烦,这时候我们可以配置公私钥来实现免密。

首先,在客户端生成公钥:

ssh-keygen -t rsa

回车后会提示输入私匙的密码,如果要免密就直接回车,否则自定义一个密码(如果自定义了密码,则每次 push 和 pull 时填入的是设置的密码)。

命令执行成功后,会在当前用户目录的.ssh文件夹生成文件id_rsaid_rsa.pub,其中 .pub 文件就是公匙,另一个是私匙。

把文件id_rsa.pub拷贝到服务端:

ssh-copy-id git@10.211.55.10

通过ssh-copy-id命令为最简单的方法,如果服务端已经更改git账户为git-shell的话,要么先临时改回来,要么用另一种方法:

  1. 先通过scp将本机的id_rsa.pub复制到对方机器的.ssh目录下 $ scp ~/.ssh/id_rsa.pub user@serverIP:/home/git/.ssh
  2. 在对方机器上执行cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys导入公钥

全部配置完毕后,试试效果:

$ git pull
Already up-to-date.


  • 标签云

  • 支付宝扫码支持一下

  • 微信扫码支持一下



基于Nginx+Supervisord+uWSGI+Django1.11.1+Python3.6.5构建

京ICP备20007446号-1 & 豫公网安备 41100202000460号

网站地图 & RSS | Feed