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

廣告