Git傳輸協議的對比分析

不是公子的小白發表於2024-03-13

Git有四種主要的協議來傳輸資料:1)本地協議(Local);2)HTTP協議;3)SSH(Secure Shell)協議;4)Git協議;其中,本地協議由於目前大都是進行遠端開發和共享程式碼所以一般不常用,而Git協議由於缺乏授權機制且較難架設所以也不常用。最常用的便是SSH和HTTP(S)協議。

HTTP(S)優缺點

優點一:相對於SSH協議,可以使用使用者名稱/密碼授權是一個很大的優勢,這樣使用者就不需要在使用Git之前先在本地生成SSH金鑰對再把公鑰上傳到伺服器。對非資深的使用者,或者系統上缺少SSH相關程式的使用者,HTTP協議的可用性是主要的優勢。

優點二:企業防火牆一般會開啟80和443這兩個常見的http和https協議埠,使用http和https協議在架設了防火牆的企業裡面就可以繞過安全限制正常使用Git,非常方便。

缺點:使用http/https協議除了速度慢之外,還有個最大的麻煩就是每次推送都必須輸入口令。但是好在現在的作業系統或者其他的Git工具都提供了keychain的功能,可以把你的賬戶密碼記錄在系統裡,例如OSX的Keychain或Windows的憑證管理器。

SSH的優缺點

優點一:SSH協議是一個驗證授權的網路協議,其具有普遍性,架設和使用都很容易。

缺點一:SSH服務端一般使用22埠,企業防火牆可能沒有開啟這個埠。

缺點二:SSH 協議的缺點在於你不能透過它實現匿名訪問。即便只用讀取資料,使用者也要有透過SSH訪問你主機的許可權,這使得SSH協議不利於開源的專案。如果你只在公司網路使用,SSH 協議可能是你唯一要用到的協議。如果你還要提供匿名只讀訪問的功能,那麼你除了為自己推送架設SSH服務以外,還得架設一個可以讓其他人訪問的服務。

總結

HTTPS利於匿名訪問,適合開源專案,可以方便被別人克隆和讀取(但他沒有push許可權);畢竟為了克隆別人一個倉庫學習一下你就要生成個ssh-key折騰一番還是比較麻煩,所以github除了支援ssh協議必然還提供了https協議的支援。而SSH協議使用公鑰認證比較適合內部專案。當然了,現在的程式碼管理平臺例如github、gitlab,兩種協議都是支援的,基本上看自己喜好和需求來選擇就可以了。

相關文章