2010-01-18 45 views
18

我想通過代理服務器執行「git clone」。問題是我的代理服務器使用摘要式身份驗證。所以我在git文檔中找不到任何東西,也無法幫助那些已經制作好的人。通過摘要代理驗證Git

我通過谷歌搜索挖掘,我無法找到任何有用的結果。

Thxs。

回答

20

只是爲了節省谷歌搜索班納特的答案片刻:

  1. 清除舊的設置:
    >git config --global --unset https.proxy
    >git config --global --unset http.proxy
  2. 設置新的設置:
    >git config --global https.proxy https://USER:[email protected]:80
    >git config --global http.proxy http://USER:[email protected]:80

  3. 驗證新設置:
    >git config --get https.proxy
    >git config --get http.proxy

注意:當你確認,你應該看到你把相同的值

+0

+1謝謝你解決我煩人的問題.. – suhailvs 2013-11-25 05:12:26

1

的Git似乎並不支持身份驗證的代理服務器。你可以檢查http.c from the git.git repository;爲了完全支持經過身份驗證的代理服務器,它必須設置CURL_PROXYUSERPWD來設置用戶名和密碼,但該字符串不會出現在該文件中。

一個可能的解決方案是修復Git;添加幾個配置參數http.c,如http.proxyuser,http.proxypass,爲代理設置用戶名和密碼,並且http.proxyauth設置認證方式,然後將其作爲合適的cURL configuration options傳入。

如果你不喜歡黑客的Git的源代碼,你可以從建立自己的本地代理服務器,需要任何身份驗證,然後轉發到要求身份驗證的代理服務器。 Squid支持this mode of operation,雖然配置可能有點複雜;我發現an example configuration,旨在證明這一設置,雖然我還沒有證實它可以自己工作。

編輯:沒關係,檢查Squid source code後,它似乎只支持基本身份驗證,而不是摘要式身份驗證,將請求轉發到對等時:

httpHeaderPutStrf(hdr_out, header, "Basic %s", base64_encode(orig_request->peer_login)); 

我還沒有發現任何代理可以將請求傳遞給啓用摘要身份驗證的另一個代理的服務器;如果你可以找到一個支持上游代理的摘要認證,我建議使用它。

否則,我建議使用不同的協議不是HTTP;如果您需要身份驗證,請使用ssh:,如果您只是從公用服務器上取消更改,請使用協議或原始git:協議。

+0

所以你告訴我安裝魷魚作爲本地代理? Thxs的幫助。 – erick2red 2010-01-18 21:55:06

+0

是的,我建議您將Squid設置爲本地代理服務器(在運行Git的同一臺機器上),不進行身份驗證,並讓Squid連接到具有身份驗證的代理服務器。然後,只需配置Git即可使用本地Squid作爲其代理服務器。 – 2010-01-18 22:08:39

+0

非常感謝你(嘗試達到15個字符)。 – erick2red 2010-01-18 22:27:32

17

我能夠通過設置環境變量http_proxyhttp://username:[email protected]:80

然後一個普通的OLE git clone曾通過身份驗證的代理做一個git克隆。

(代理是一些企業Windows的事情,所以我的用戶名本來的樣子域\用戶名。一段時間以後才意識到,我所需要的領域。)

+0

甜 - 爲我工作的一種享受。感謝您爲我解決這個長期存在的問題:) – cristobalito 2010-11-02 19:46:27

+0

如果用戶名包含\和。 ? – Tudorizer 2011-04-26 16:21:00

+0

沒問題。正如我所提到的,我的用戶名包含一個反斜槓。 – 2011-04-28 04:03:04

2

需要注意的是Git的不支持HTTP代理,因爲Git 1.7.10, Apr. 2012, commit dd61399

但是,這假設你已經安裝了捲曲7.10.7+,這是一件好事混帳不混帳之前檢查2.3.2+(Q1 2015)

這是固定的commit 1c2dbf2Tom G. Christensen (tgc)

HTTP:支持捲曲< 7.10.7

Commit dd61399需要身份驗證的HTTP代理服務器的推出的支持,但它依賴於這是 加入CURL_PROXYAUTH選項捲曲7.10.7。
這確保只有在libcurl可以支持代理身份驗證時才啓用代理身份驗證。