Git - 守护进程



Git 守护进程是一个简单的 TCP 服务器,它与 Git 捆绑在一起。它允许用户使用 git 协议获取和克隆仓库。

为通过 Git 协议提供仓库服务设置 Git 守护进程涉及考虑其未经身份验证的特性。因此,它在您希望公开提供 Git 仓库并仅提供只读访问权限的场景中很有用。

Git 守护进程提供的所有数据在其网络内都是公开可访问的。

关键特性

以下是 git 守护进程的一些关键特性

  • 在防火墙外部部署时,将其使用限制在旨在公开显示的项目上。

  • 在防火墙内部,Git 守护进程可以为多个用户或系统可访问的项目提供只读访问权限。

  • 这包括持续集成或构建服务器等场景。

  • 与 SSH 不同,Git 守护进程访问不需要每个用户或系统单独的 SSH 密钥。

  • 它速度快且消耗最少的系统资源,因为它不处理身份验证或加密。

设置 Git 守护进程

以下步骤将设置并运行 Git 守护进程,以通过 Git 协议提供仓库服务

安装 Git 守护进程

Git 守护进程与 Git 捆绑在一起,因此如果您安装了 Git,您就已经可以使用 Git 守护进程了。检查 Git 是否已安装

git --version

如果 Git 未安装,请先安装 Git。使用以下命令

  • Ubuntu/Debian

    sudo apt install git
  • CentOS/Fedora

    sudo yum install git

设置仓库

仓库需要初始化为裸仓库,因为 git 守护进程主要用于服务而不是开发。

为 Git 守护进程启用仓库

您需要专门允许 Git 守护进程,以便它可以提供 Git 仓库服务。为了实现这一点,在裸仓库内创建一个名为git-daemon-export-ok的文件。此文件至关重要,因为它被标记为一个标志,指示可以通过 Git 协议提供仓库服务。

touch /path/to/repository.git/git-daemon-export-ok

注意:此文件很重要,因为没有它,仓库将不会通过 Git 守护进程公开。

运行 Git 守护进程

使用以下命令调用 Git 守护进程

git daemon --reuseaddr --base-path=/path/to/repositories --export-all --verbose --enable=receive-pack
  • --reuseaddr - 它允许 git 守护进程重用相同的地址,而无需等待超时。

  • --base-path=/path/to/repositories - 它指定 Git 守护进程将从中提供仓库服务的目录。

  • --export-all - 在基本路径下,所有仓库都将导出,即使它们没有git-daemon-export-ok文件。此命令应谨慎使用。

  • --verbose - 它启用详细输出以进行调试过程。

  • --enable=receive-pack - 它允许用户推送到仓库。出于各种安全原因,默认情况下它处于禁用状态。

通过 Git 守护进程访问仓库

由于守护进程正在运行,您可以使用 git 协议克隆或获取仓库。请查看一个示例

git clone git://your_server_ip_or_hostname/repository.git

Git 守护进程的优势

以下是 Git 守护进程的一些优势

  • 无需身份验证 - 它非常适合公共仓库,您不需要用户特定的访问控制。

  • 速度 - 由于 Git 协议轻量级且针对性能进行了优化,因此它比 SSH 和 HTTP 快。

  • 易于设置 - 它的设置简单易于配置和运行。

Git 守护进程的局限性

以下是 Git 守护进程的一些局限性

  • 无需身份验证 - 由于这是一个优点,它也是一个限制。它不能用于私有仓库或需要安全访问的情况

  • 只读 - 默认情况下它是只读的。尽管您可以使用--enable=receive-pack选项推送更改,但由于缺乏身份验证和安全性,不建议这样做。

  • 没有加密 - 由于 git 协议没有处理加密,因此传输安全和敏感数据是不安全的。

如果您需要身份验证和加密,则应考虑用于私有仓库的替代方案,例如SSHHTTPS

广告