CentOS下如何从零开始搭建Git私有服务器?

在团队协作和代码版本控制中,搭建一个私有的 Git 服务器是许多企业和开发者的选择,它能提供更高的安全性、完全的控制权以及与内部系统的无缝集成,本文将详细介绍如何在 CentOS 系统上,通过 SSH 协议搭建一个稳定、安全的 Git 服务器。

CentOS下如何从零开始搭建Git私有服务器?

环境准备

在开始之前,请确保您拥有一台安装了 CentOS(推荐 7 或 8 版本)的服务器,并拥有 sudo 权限,所有操作都将通过命令行完成。

更新系统软件包到最新版本,这是一个良好的运维习惯。

sudo yum update -y

安装 Git 服务所需的核心软件——Git。

sudo yum install -y git

安装完成后,可以通过 git --version 命令来验证 Git 是否已成功安装。

创建专用 Git 用户

为了安全起见,我们不应该直接使用 root 用户或其他普通用户来管理 Git 仓库,创建一个专用的 git 用户,可以隔离权限,降低安全风险。

  1. 创建用户

    sudo adduser git
  2. 为用户设置密码(此密码主要用于服务器端管理,客户端推荐使用 SSH 密钥登录)

    sudo passwd git

    系统会提示您输入并确认新密码。

初始化裸仓库

Git 仓库分为两种:普通仓库和裸仓库,普通仓库包含我们日常开发时看到的源代码文件和 .git 目录,而裸仓库只包含 Git 版本历史的核心数据,没有工作目录,它不用于直接编辑文件,而是作为共享的“中央仓库”,供多个用户推送和拉取代码。

仓库类型 用途 目录结构
普通仓库 开发者的工作区 包含项目文件和 .git 目录
裸仓库 远程中央仓库 只包含 .git 目录下的内容,无项目文件

我们切换到 git 用户,并创建一个裸仓库。

# 切换到 git 用户
su - git
# 创建一个用于存放所有仓库的目录
mkdir -p /home/git/repositories
# 进入该目录
cd /home/git/repositories
# 初始化一个名为 my-project.git 的裸仓库
git init --bare my-project.git

执行完毕后,/home/git/repositories/my-project.git 目录就创建好了,它就是我们的第一个远程 Git 仓库。

配置 SSH 密钥认证

使用密码进行 Git 操作既不安全也不方便,标准的做法是使用 SSH 密钥对进行认证。

CentOS下如何从零开始搭建Git私有服务器?

  1. 在服务器端准备

    我们需要在 git 用户的主目录下创建一个 .ssh 目录,用于存放客户端的公钥。

    # 确保当前是 git 用户
    # 创建 .ssh 目录
    mkdir /home/git/.ssh
    # 设置正确的权限,这是 SSH 安全要求的关键一步
    chmod 700 /home/git/.ssh
    # 创建 authorized_keys 文件,用于存储所有被授权的客户端公钥
    touch /home/git/.ssh/authorized_keys
    # 设置文件权限,同样重要
    chmod 600 /home/git/.ssh/authorized_keys
  2. 在客户端操作

    在每个需要访问 Git 服务器的开发者的电脑上(假设是 Linux 或 macOS),生成 SSH 密钥对(如果还没有的话)。

    ssh-keygen -t rsa -C "your_email@example.com"

    一路回车即可,这会在用户主目录的 .ssh 文件夹下生成 id_rsa(私钥)和 id_rsa.pub(公钥)两个文件。

    将客户端的公钥(id_rsa.pub 文件的内容)添加到服务器的 /home/git/.ssh/authorized_keys 文件中,您可以使用 ssh-copy-id 命令(如果客户端支持),或者手动复制。

    手动复制方法:
    在客户端电脑上,查看并复制公钥内容:

    cat ~/.ssh/id_rsa.pub

    登录到 CentOS 服务器,切换到 git 用户,将复制的内容粘贴到 authorized_keys 文件的末尾。

    su - git
    echo "paste_the_public_key_content_here" >> /home/git/.ssh/authorized_keys

    每个需要访问的客户端都需要将其公钥添加到这个文件中。

客户端克隆与测试

至此,Git 服务器已搭建完成,现在可以在客户端上进行测试。

  1. 克隆仓库

    your_server_ip 替换为您的 CentOS 服务器 IP 地址。

    CentOS下如何从零开始搭建Git私有服务器?

    git clone git@your_server_ip:/home/git/repositories/my-project.git

    如果一切正常,您会看到克隆成功的提示,并本地出现一个 my-project 文件夹。

  2. 进行 Git 操作

    进入项目目录,创建一个文件,然后进行提交和推送,以测试写入权限。

    cd my-project
    echo "Hello, Git Server!" > README.md
    git add README.md
    git commit -m "Initial commit"
    git push origin main

    注意:初始分支名可能是 master,取决于您的 Git 客户端版本和配置,请使用 git branch 查看。

    如果推送没有报错,恭喜您,您的 CentOS Git 服务器已经完全正常工作了!

相关问答FAQs

问题 1:我忘记了 Git 用户的密码,或者想禁用密码登录,只允许密钥登录,怎么办?

解答: 如果忘记密码,可以使用 root 用户执行 sudo passwd git 来重置,为了提升安全性,强烈建议禁用 git 用户的密码登录,强制使用 SSH 密钥,编辑 SSH 的配置文件 sudo vi /etc/ssh/sshd_config,找到 PasswordAuthentication 这一行,将其值改为 no(如果被注释了,去掉开头的 ),保存退出,然后重启 SSH 服务使配置生效:sudo systemctl restart sshd,这样,任何试图通过密码登录 git 用户的操作都会被拒绝。

问题 2:我如何为不同的仓库设置不同的用户权限?比如A用户可以读写 project-a,但只能读取 project-b。

解答: 使用上文介绍的 authorized_keys 方法,所有授权用户对 git 用户主目录下的所有仓库都拥有相同的读写权限(基于文件系统的权限),要实现精细化的、按仓库的权限控制,仅靠 authorized_keys 会非常复杂,推荐使用 Gitosis 或更现代的 Gitolite 这类工具,Gitolite 通过一个特殊的 Git 仓库来管理所有权限配置,您只需在一个配置文件中定义用户、仓库和访问规则(如 RW+, R),然后推送这个配置仓库,Gitolite 就会自动更新服务器上的 authorized_keys 和仓库权限,极大地简化了多用户、多仓库的权限管理工作。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-15 00:26
下一篇 2025-10-15 00:36

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信