Git - Git 協議



Git 包含 Git 協議,這是一種專門的網路協議,它作為在埠 9418 上執行的守護程序來服務 Git 倉庫。

雖然它沒有加密或身份驗證,但它的功能類似於 SSH。

主要特性

Git 協議的一些主要特性包括:

1. 專為 Git 打造 - 它針對 Git 倉庫進行了最佳化,用於傳輸 Git 物件和倉庫資料。它比 SSH、HTTP 等其他協議更高效。

2. 無身份驗證 - 與其他協議不同,Git 協議預設情況下不需要身份驗證。這允許您從遠端倉庫克隆和獲取資料。但是,如果沒有適當的訪問許可權,您無法將資料推送到遠端倉庫。

3. 效率 - 由於此協議專門用於 Git 倉庫,因此在從大型倉庫獲取和克隆資料時,它更快更高效。

4. 使用專用埠 - 此協議執行在專用埠9418 上。透過繞過 HTTP/SSH 的開銷來提高速度,但會被防火牆阻止。

  • 為了能夠使用此協議提供服務,倉庫中需要存在一個git-daemon-export-ok檔案。

  • 安全性很簡單:要麼每個人都可以克隆倉庫,要麼不行。

  • 透過此協議推送更新的情況很少見,因為它不提供身份驗證。

  • 由於缺乏身份驗證,任何有權訪問倉庫 URL 的人都可能被允許進行未經授權的更改。

工作原理?

以下是 Git 協議工作原理的步驟:

  • 克隆或獲取倉庫 - 透過 Git 協議(透過 git:// URL)連線到 Git 伺服器後,伺服器會發送引用列表(分支、標籤等),客戶端請求它需要的特定資料(物件)。

  • 推送更改 - Git 協議本身不支援經過身份驗證的推送操作,因此通常不用於推送更改。為此,通常使用 SSH 或 HTTPS。

如果您想使用 Git 協議克隆倉庫,請執行以下命令:

git clone git://github.com/username/repository.git

優點

Git 協議有很多優點:

  • 更快 - Git 協議通常是 Git 倉庫最快的網路傳輸協議。

    使其非常適合處理繁重的流量負載或服務大型專案,尤其適用於需要快速訪問的開放專案。

  • 輕量級 - 它像 SSH 一樣高效地傳輸資料,但沒有身份驗證和加密的開銷。

    因此可以提高效能並減少伺服器的計算負載,尤其對於只讀任務(如克隆倉庫)而言。

  • 廣泛支援 - Git 協議由於其輕量級且高效地處理資料,因此可以擴充套件以管理不需要使用者身份驗證即可進行讀取訪問的大型專案。

缺點

Git 協議有一些缺點:

  • 安全性有限 - 因為它沒有加密 (TLS),使用者可能容易受到任意程式碼執行的攻擊。

    控制網路基礎設施的攻擊者可能會更改倉庫的內容,這可能導致系統執行惡意程式。

  • 無身份驗證 - 由於沒有內建身份驗證,任何知道倉庫 URL 的人都可以克隆它。

    這對於開放專案是有益的,但它會使專有程式碼或敏感程式碼面臨風險。

  • 設定複雜 - Git 協議需要額外的設定過程,例如為 git 守護程序配置 xinetd 或 systemd,這對某些使用者和環境來說可能很困難。

  • 防火牆問題 - 由於 Git 協議執行在自定義埠 9418 上,因此它可能無法訪問這些防火牆,這些防火牆通常出於安全原因而被禁止。

Git 協議是一種高效且專用的 Git 資料傳輸協議,但由於缺乏身份驗證和加密,它主要用於只讀任務和其他公共場景。在需要高安全性和加密的寫訪問許可權的情況下,SSH 和 HTTP 是更可取的協議。

廣告