CentOS 7 Git服务器搭建
在软件开发和团队协作中,版本控制系统起着至关重要的作用,Git 作为一种分布式版本控制系统,因其高效、灵活的特性被广泛采用,本文将详细介绍如何在 CentOS 7 上搭建一个 Git 服务器,包括安装、配置及客户端操作等步骤,通过本文,您将掌握从零开始搭建 Git 服务器的全过程,并了解如何进行相关配置以确保系统的安全性和稳定性。
一、Git简介
Git 是由 Linus Torvalds 开发的一款免费且开源的分布式版本控制系统,旨在快速高效地处理从小型到大型的各种项目,它最初用于辅助 Linux 内核的开发,现已广泛应用于各种自由软件项目中,Git 的核心优势在于其分布式架构,每个开发者都拥有一个完整的代码库副本,这使得代码的合并、分支管理更加灵活和高效。
二、安装与配置 Git 服务器
检查是否已安装 Git
在安装前,首先需要检查系统中是否已经安装了 Git,打开终端并输入以下命令:
git --version
如果系统中未安装 Git,会提示command not found
之类的错误信息,如果已安装,则会显示已安装的 Git 版本号。
安装 Git
如果系统中没有安装 Git,可以使用 Yum 包管理器来安装,执行以下命令:
sudo yum install -y git
此命令会从默认的软件仓库中下载并安装 Git,安装完成后,再次输入git --version
确认安装是否成功。
创建 Git 用户
为了安全性和管理方便,建议为 Git 服务单独创建一个用户,执行以下命令:
sudo useradd git sudo passwd git
设置完密码后,记得记录下来以备后用。
创建裸仓库
Git 仓库通常分为两种:一种是普通仓库,另一种是裸仓库(bare repository),裸仓库没有工作区,只有版本信息,适用于服务器端存储,执行以下命令在/usr/local
目录下创建一个名为learngit.git
的裸仓库:
cd /usr/local/ sudo mkdir git cd git sudo git init --bare learngit.git
初始化完成后,目录结构如下:
/usr/local/git/learngit.git/ ├── branches ├── config ├── description ├── heads ├── hooks ├── info └── objects ├── ... (一系列对象文件) └── pack
修改仓库所有权
为了确保仓库的权限正确,将其所有者修改为git
用户:
sudo chown -R git:git /usr/local/git
这样,git
用户就拥有了对此仓库的完全控制权。
6. 禁用 Git 用户 shell 登录
出于安全考虑,禁止git
用户通过 SSH 直接登录 shell,编辑/etc/passwd
文件,找到git
用户那一行,将登录 shell 改为/usr/bin/git-shell
:
git:x:1001:1001::/home/git:/usr/bin/git-shell
保存退出后,git
用户只能通过 SSH 使用 Git,但无法登录系统 shell。
三、配置 SSH 密钥认证
SSH 密钥认证是一种比传统密码更安全的身份验证方式,可以有效防止暴力破解攻击,以下是配置过程:
生成 SSH 密钥对
在客户端机器上(Windows),使用 Git Bash 或其他终端工具生成 SSH 密钥对:
ssh-keygen -t rsa -C "your_email@example.com"
按提示操作,一路回车即可完成密钥对的生成,生成的密钥对包括私钥(id_rsa)和公钥(id_rsa.pub)。
将公钥添加到服务器
将生成的公钥内容复制到服务器的~/.ssh/authorized_keys
文件中,可以通过以下命令实现:
ssh-copy-id -i ~/.ssh/id_rsa.pub git@your_server_ip
输入git
用户的密码后,公钥会自动添加到服务器的~/.ssh/authorized_keys
文件中。
测试连接
尝试使用 SSH 连接到服务器,确保公钥认证配置正确:
ssh git@your_server_ip
如果一切正常,会看到类似如下的提示:
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-42-generic x86_64) ...
此时可以输入exit
退出连接。
四、克隆远程仓库
完成以上步骤后,就可以在客户端克隆远程仓库了,假设服务器 IP 地址为192.168.110.98
,执行以下命令:
git clone git@192.168.110.98:/usr/local/git/learngit.git
首次克隆时,会出现类似如下的提示:
The authenticity of host '192.168.110.98 (192.168.110.98)' can't be established. RSA key fingerprint is 2b:55:45:e7:4c:29:cc:05:33:78:03:bd:a8:cd:08:9d. Are you sure you want to continue connecting (yes/no)?
输入yes
并继续,然后输入git
用户的密码即可完成克隆操作。
五、常见问题解答(FAQs)
Q1:如何更改 Git 用户的 shell?
A1:要更改 Git 用户的 shell,可以编辑/etc/passwd
文件,找到git:x:1001:1001::/home/git:/bin/bash
这一行,将最后的/bin/bash
改为/usr/bin/git-shell
,如下所示:
git:x:1001:1001::/home/git:/usr/bin/git-shell
保存并退出编辑器即可生效。
Q2:如何避免每次 push/pull 都需要输入密码?
A2:为了避免每次 push/pull 都需要输入密码,可以使用 SSH 密钥认证,首先在客户端生成 SSH 密钥对,然后将公钥添加到服务器的~/.ssh/authorized_keys
文件中,配置完成后,再次进行 push/pull 操作时就不需要输入密码了。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1263582.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复