CentOS搭建Git服务器

1、环境准备
服务器端:CentOS 7.7 + git (version 1.8.3.1)
客户端:Windows10 + git (version 2.27.0.windows.1)

由于CentOS已经内置了OpenSSH,如果您的系统没有,请自行安装

$ ssh -V
# 输出以下表示OpenSSH已安装,可能版本不同,能用即可。
<output> OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
2、安装Git

Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git。

①服务器端:
$ yum install -y git
# 安装完后,查看 Git 版本
$ git --version
<output> git version 1.8.3.1

在这里插入图片描述

②客户端:

Git官网下载地址:Git官网
Git 2.27.0 64位百度网盘地址:提取码:2iyq
安装完之后,查看 Git 版本

$ git --version
<output> git version 2.27.0.windows.1
3、服务器端建立git 用户组与git用户
  1. 创建用户组gitGrp:
$ groupadd gitGrp
  1. 创建用户admin:
$ useradd admin
  1. 给用户admin设置密码
$ passwd admin

在这里插入图片描述
4. 给用户admin分配到gitGrp组

$ usermod -g gitGrp admin
5、服务器端创建 Git 仓库

设置 git/gittest.git 为 Git 仓库
然后把 Git 仓库的 owner 修改为 admin

$ mkdir -p ./git/gittest.git
# 使用git init --bare可以创建一个裸仓库,并且这个仓库是可以被正常clone和push的
$ git init --bare git/gittest.git/
<output> Initialized empty Git repository in /home/admin/git/gittest.git/
$ cd git/
$ chown -R admin:gitGrp gittest.git/
6、客户端 clone 远程仓库

从 Linux Git 服务器上 clone 项目:

$ git clone admin@42.xxx.xxx.163:/home/admin/git/gittest.git

如果SSH用的不是默认的22端口,则需要使用以下的命令(假设SSH端口号是8000):

$ git clone admin@42.xxx.xxx.163:8000/home/admin/git/gittest.git

当第一次连接到目标 Git 服务器时会得到一个提示:

The authenticity of host '42.xxx.xxx.163 (42.xxx.xxx.163)' can't be established.
ECDSA key fingerprint is SHA256:KyTFSG6QYzVbsJX2F2Vr1YZAIvs11sDlmH0upuIiRt0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

输入 yes:

Warning: Permanently added '42.xxx.xxx.163' (ECDSA) to the list of known hosts.

此时 C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。
在这里插入图片描述
后面提示要输入密码,可以采用 SSH 公钥来进行验证。

7、客户端创建 SSH 公钥和私钥
$ ssh-keygen -t rsa -C "your content"

在这里插入图片描述
此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub
id_rsa 是私钥
id_rsa.pub 是公钥
公钥加密,私钥解密
在这里插入图片描述

8、服务器端 Git 打开 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

在这里插入图片描述
保存并重启 sshd 服务:

$ systemctl restart sshd.service

由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 admin,所以实际存放公钥的路径是 /home/admin/.ssh/authorized_keys
在 /home/admin/ 下创建目录 .ssh

$ mkdir .ssh

在这里插入图片描述
然后把 .ssh 文件夹的 owner 修改为 admin

$ chown -R admin:gitGrp .ssh

在这里插入图片描述

9、将客户端公钥导入服务器端 /home/admin/.ssh/authorized_keys 文件
$ ssh admin@42.xxx.xxx.163 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

在这里插入图片描述

重要:

修改 .ssh 目录的权限为 700
修改 .ssh/authorized_keys 文件的权限为 600

$ chmod 700 .ssh
$ cd .ssh/
$ chmod 600 authorized_keys
客户端再次 clone 远程仓库
$ git clone admin@42.xxx.xxx.163:/home/admin/git/gittest.git
10、禁止 git 用户 ssh 登录服务器

之前在服务器端创建的 git 用户不允许 ssh 登录服务器
编辑 /etc/passwd
找到:

admin:x:1000:1000::/home/admin:/bin/bash

修改为:

admin:x:1000:1000::/home/admin:/bin/bgit-shell

此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值