2010-01-18 7 views
18

Ich möchte "Git Clone" über einen Proxy-Server zu tun. Das Problem ist, dass mein Proxy-Server Digest-Authentifizierung verwendet. So kann ich weder in der Git-Dokumentation noch in der Hilfe jemanden finden, der schon gemacht hat.Git durch Digest Proxy Authentifizierung

Ich graben durch Google-Suche und ich kann keine hilfreichen Ergebnisse finden.

Thxs.

Antwort

20

Nur ein paar Momente der Googeln auf Bennets Antwort zu speichern:

  1. Klar alten Einstellungen:
    >git config --global --unset https.proxy
    >git config --global --unset http.proxy
  2. Setzen Sie neue Einstellungen:
    >git config --global https.proxy https://USER:[email protected]:80
    >git config --global http.proxy http://USER:[email protected]:80

  3. Überprüfen Sie die neuen Einstellungen:
    >git config --get https.proxy
    >git config --get http.proxy

. HINWEIS: Wenn Sie überprüfen, sollten Sie die gleichen Werte sehen, die Sie setzen in

+0

+1 danke für die Lösung meiner irritierenden Problem .. – suhailvs

1

Git scheint authentifizierte Proxy-Server nicht zu unterstützen. Sie können überprüfen http.c from the git.git repository; Um authentifizierte Proxy-Server überhaupt zu unterstützen, müsste CURL_PROXYUSERPWD gesetzt werden, um den Benutzernamen und das Passwort zu setzen, aber diese Zeichenfolge erscheint nicht in dieser Datei.

Eine mögliche Lösung wäre, Git zu reparieren; Fügen Sie weitere Konfigurationsparameter zu http.c hinzu, wie http.proxyuser, http.proxypass, um den Benutzernamen und das Kennwort für den Proxy festzulegen, und http.proxyauth, um die Authentifizierungsmethode festzulegen, und geben Sie diese dann entsprechend cURL configuration options ein.

Wenn Sie keine Lust haben, den Git-Quellcode zu hacken, können Sie Ihren eigenen lokalen Proxy-Server einrichten, der keine Authentifizierung benötigt, und ihn dann an den Proxy-Server weiterleiten, der eine Authentifizierung erfordert. Squid unterstützt this mode of operation, obwohl die Konfiguration ein wenig komplex sein kann; Ich fand an example configuration, die vorgibt, dieses Setup zu demonstrieren, obwohl ich nicht verifiziert habe, dass es selbst funktioniert.

bearbeiten: Es macht nichts, nachdem die Squid source code Überprüfung, scheint es nur die Standardauthentifizierung zu unterstützen, nicht Digest-Authentifizierung, wenn Anfragen an einen Peer-Weiterleitung:

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

ich gefunden habe, keine Proxy Server, die eine Anfrage an einen anderen Proxy weiterleiten können, wobei die Digest-Authentifizierung aktiviert ist; Wenn Sie einen finden, der digest auth für einen Upstream-Proxy unterstützt, würde ich empfehlen, diesen zu verwenden.

Andernfalls würde ich ein anderes Protokoll als HTTP empfehlen; Verwenden Sie ssh:, wenn Sie Authentifizierung benötigen, oder das rohe git:-Protokoll, wenn Sie nur Änderungen von einem öffentlichen Server herunterziehen.

+0

Also sagen Sie mir, Tintenfisch als lokaler Proxy zu installieren ??? Danke von der Hilfe. – erick2red

+0

Ja, ich empfehle, Squid als lokalen Proxy-Server (auf demselben Computer, auf dem Git ausgeführt wird) ohne Authentifizierung einzurichten und Squid mit Ihrem Proxy-Server mit Authentifizierung verbinden zu lassen. Konfigurieren Sie dann Git so, dass Sie Ihren lokalen Squid als Proxy-Server verwenden. –

+0

Thxs Sie, sehr (versucht, 15 Zeichen zu erreichen). – erick2red

17

konnte ich ein git clone über einen authentifizierten Proxy tun, indem Sie die Umgebungsvariable http_proxy-http://username:[email protected]:80

Dann wird eine einfache alte git clone gearbeitet Einstellung.

(Der Proxy ist etwas Corporate Windows Sache, so sah mein Benutzername tatsächlich wie Domain \ Benutzername. Dauerte eine Weile, um zu erkennen, dass ich die Domain brauchte.)

+0

süß - arbeitete ein Vergnügen für mich. Vielen Dank für die Lösung dieses langanhaltenden Problems für mich :) – cristobalito

+0

Was ist, wenn der Benutzername \ und enthält? ? – Tudorizer

+0

Kein Problem. Wie ich bereits erwähnt habe, enthält mein Benutzername einen Backslash. –

2

Beachten Sie, dass Git http-Proxies jedoch zwingend nötig, da Git 1.7.10, Apr. 2012, commit dd61399.

Aber, die Sie haben curl 7.10.7+ vermutet installiert, die etwas Git ist nicht war, bevor Git Überprüfung 2.3.2+ (Q1 2015)

Das mit commit 1c2dbf2 von Tom G. Christensen (tgc) fixiert ist

http: Unterstützung curl < 7.10.7

Commit dd61399 eingeführte Unterstützung für hTTP-Proxies, die eine Authentifizierung erfordern, aber es stützt sich auf die CURL_PROXYAUTH Option, die hinzugefügt wurde in der Locke 7.10.7.
Dadurch wird sichergestellt, dass die Proxy-Authentifizierung nur aktiviert wird, wenn libcurl sie unterstützen kann.

Verwandte Themen