Centos中简易git服务器搭建

对于微小型的开发团队,可直接使用git工具进行代码仓库的管理。以下操作在Centos系统下进行。

  • 操作系统:CentOS 8.0 64位

1 Git 安装

首先安装git工具,可参考 阿里云ECS(Centos)中Git工具安装及配置。命令如下(建议在root用户下进行):

# 安装git
yum install -y git
# 查看git版本
git --version

2 Git账户

为便于管理,创建专用于git仓库的系统账户,存储仓库的源代码。

2.1 创建git账户

详细的用户相关操作可参考 https://blog.csdn.net/lxh_worldpeace/article/details/106933143。命令如下:

# 创建git用户
adduser git
# 修改密码,两次确认密码
passwd crane
# 创建用户成功 可在/home目录下看到该用户的文件夹
ls /home

注:密码长度小于8可能会有错误提示,如果确定用端密码可忽略该提示,只要两次输入密码相同即可,如下图

在这里插入图片描述

完成上面步骤后,有git账户的密码可通过远程shell登录,如下。但是这样并不安全,所以应该远程登录操作应该禁止。
在这里插入图片描述

2.2 禁用远程登录git账户

2.2.1 创建git-shell-commands目录

在git用户目录/home/git 下面创建git-shell-commands目录,可使用git账户进行操作,命令如下:

# 切换到git账户
su git
# 进入到git主目录
cd
# 查看当前目录
pwd
# 创建目录git-shell-commands
mkdir git-shell-commands

此文件夹是git-shell用到的目录,需要我们手动创建,不然报错:fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access.

在这里插入图片描述

2.2.2 修改git账户默认shell

在系统安装完git工具之后,会在/usr/bin/git-shell目录增加一个git-shell可执行文件,用于git操作。首先确保在当前系统的可用shell列表中包含该git-shell工具,如下图,查看/etc/shells文件中是否有git-shell工具,如果没有就添加进去(注意是完整路径)。
在这里插入图片描述
完成上面操作后,有以下两种方式修改当前系统默认shell工具。

2.2.2.1 修改文件

修改文件/etc/passwdgit:x:1001:1001::/home/git:/bin/bash 中的bashgit-shell

文件中的1001bash也可能是别的内容
在这里插入图片描述

2.2.2.2 命令方式
# 修改git用户的默认shell工具
chsh git -s /usr/bin/git-shell

2.2.3 禁用shell登录

通过上面操作,还可以进行shell登录,只不过登录成功后会进入git-shell命令行,但是什么都不能做,只能执行exit退出命令。如下图:
在这里插入图片描述

要完全禁止shell登录,可以在git-shell-commands目录下创建no-interactive-login文件,是远程shell登录后输出一些提示信息,然后退出登录。文件内容如下:

#!/bin/sh
printf '%s\n'
printf '%s\n' ">> Hi $USER! You've successfully authenticated, but I do not provide interactive shell access."
printf '%s\n'
exit 128

注意:不要忘了给no-interactive-login文件添加可执行权限(命令:chmod +x no-interactive-login)

然后再通过shell登录git账户,会输出响应提示信息,如下图:
在这里插入图片描述
由于git账户已经禁用shell登录,所以登录其他账户之后也无法切换到git账户。

3 服务端仓库管理

3.1 创建仓库

由于git账户已禁用shell登录,可以使用管理员账户或者root,在git账户的目录下建立仓库,使用root账户操作命令如下:

# 进入到git用户目录下创建demo文件夹,用作仓库文件管理
mkdir demo
# 进入demo目录,初始化git仓库,执行完成后可查看到git相关文件,如下图
git init --bare

在这里插入图片描述

3.2 切换仓库文件所属用户

从上面图中可以看到,demo文件夹及目录下的文件都属于root账户,所以如果要使用git账户的权限进行访问要将文件夹属改为git账户。
在git账户目录下执行如下命令:

chown -R git demo

再次查看demo及子目录下文件,如下图,已属于git账户:
在这里插入图片描述

4 客户端仓库操作

完成上面的操作,服务端已经建立好了仓库,可在客户端进行仓库的克隆、拉取、提交等操作。

4.1 克隆仓库

在某个目录下,拉取上面建立的demo仓库。根据机器配置,上面仓库的地址为:
git@lxh.space:/home/git/demo
执行结果如下:

git clone git@lxh.space:/home/git/demo

在这里插入图片描述

4.2 创建文件并提交

服务端创建好仓库后,在客户端的操作与操作像github、gitee等托管平台的仓库一样,大致命令如下;

# 创建一个文件
touch readme.md
# 将文件加入到提交缓冲区
git add .
# 提交到本地,并设置提交信息
git commit -m 'readme'
# 推送到服务端仓库 gp为git push缩写
gp
# 查看仓库状态
git status

在这里插入图片描述

注:上图中的错误是demo仓库使用root账户创建后还没有将属主身份转移给git账户的情况,切换demo仓库的属主为git后错误解除

5 客户端操作仓库免登录

上面步骤中,每一步和服务端的操作都需要输入git账户的密码,非常繁琐。可以将客户端的ssh公钥放到服务端的git账户授权文件中,这样每次操作就不需要再输入密码了,有以下两种方式:

5.1 复制文件内容

一般情况下,客户端本机的ssh公钥存放在用户目录下的.ssh目录中的id_rsa.pub文件中,可将此文件内容复制追加到服务端git账户目录下的.ssh/authorized_keys文件中即可。

5.2 命令方式

可使用ssh-copy-id登录一次git账户即可,详细见<<Linux ssh免密登录设置>>,如下图。

# 执行以下命令输入密码即可
ssh-copy-id git@lxh.space

在这里插入图片描述

注意:这种方式需要在git账户没有禁用shell登录前进行,如果禁用了shell登录则无法成功执行此命令。禁用shell登录后可将账户先切换回其他shell,执行完ssh-copy-id命令后再换回git-shell即可,如下图:
在这里插入图片描述

如下图,将本机ssh公钥提交到服务端后便操作仓库便不再需要密码:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值