2010-01-18 24 views
18

Voglio fare "git clone" tramite un server proxy. Il problema è che il mio server proxy utilizza l'autenticazione digest. Quindi non riesco a trovare né nella documentazione git, né aiutare quella persona che ha già fatto.Git tramite autenticazione proxy digest

Scavo attraverso la ricerca di google e non riesco a trovare alcun risultato utile.

Thxs.

risposta

20

solo per risparmiare qualche momento di googling sulla risposta di Bennet:

  1. vecchie impostazioni chiare:
    >git config --global --unset https.proxy
    >git config --global --unset http.proxy
  2. Impostare nuove impostazioni:
    >git config --global https.proxy https://USER:[email protected]:80
    >git config --global http.proxy http://USER:[email protected]:80

  3. Verificare le nuove impostazioni:
    >git config --get https.proxy
    >git config --get http.proxy

. NOTA: Quando si verifica, si dovrebbe vedere gli stessi valori che si mette in

+0

+1 grazie per aver risolto il mio problema irritante .. – suhailvs

1

Git non sembra supportare i server proxy autenticati. È possibile controllare http.c from the git.git repository; al fine di supportare server proxy autenticati, dovrebbe impostare CURL_PROXYUSERPWD per impostare nome utente e password, ma quella stringa non appare in quel file.

Una possibile soluzione sarebbe quella di risolvere Git; aggiungere altri parametri di configurazione a http.proxyuser,, http.proxypass, per impostare il nome utente e la password per il proxy e http.proxyauth per impostare il metodo di autenticazione e quindi inoltrarli come appropriati cURL configuration options.

Se non si ha voglia di hackerare il codice sorgente Git, è possibile impostare il proprio server proxy locale, che non richiede autenticazione, quindi inoltrarlo da tale server al server proxy che richiede l'autenticazione. Squid supporta this mode of operation, sebbene la configurazione possa essere un po 'complessa; Ho trovato an example configuration che pretende di dimostrare questa configurazione, anche se non ho verificato che funzioni da solo.

modificare: Non importa, dopo aver controllato la Squid source code, sembra supportare solo l'autenticazione di base, non digeriscono l'autenticazione, l'inoltro richieste a un peer:

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

non ho trovato alcuna delega server che possono passare una richiesta insieme a un altro proxy con l'autenticazione digest abilitata; se riesci a trovarne uno che supporti l'autenticazione digest per un proxy upstream, ti consiglio di utilizzarlo.

Altrimenti, mi consiglia di utilizzare un protocollo diverso da HTTP; utilizzare ssh: se è necessaria l'autenticazione o il protocollo raw git: se si stanno solo spostando le modifiche da un server pubblico.

+0

Quindi mi stai dicendo di installare Squid come proxy locale ??? Thxs dall'aiuto. – erick2red

+0

Sì, ti sto raccomandando di configurare Squid come server proxy locale (sulla stessa macchina su cui Git è in esecuzione), senza autenticazione, e Squid si connette al tuo server proxy con autenticazione. Quindi configura semplicemente Git per utilizzare il tuo Squid locale come server proxy. –

+0

Thxs, molto (cercando di raggiungere 15 caratteri). – erick2red

17

sono stato in grado di fare un clone git attraverso un proxy autenticato impostando la variabile d'ambiente http_proxy-http://username:[email protected]:80

Poi un ole pianura git clone funzionato.

(Il proxy è un elemento aziendale di Windows, quindi il mio nome utente sembrava effettivamente dominio \ nome utente. Ci sono voluti un po 'per capire che avevo bisogno del dominio.)

+0

dolce - ha funzionato a meraviglia per me. Grazie per aver risolto questo problema di vecchia data :) – cristobalito

+0

Cosa succede se il nome utente contiene \ e. ? – Tudorizer

+0

Nessun problema. Come ho già detto, il mio nome utente contiene una barra rovesciata. –

2

Nota che Git supporta proxy HTTP dal Git 1.7.10, Apr. 2012, commit dd61399.

Ma, che suppone aver installato ricciolo 7.10.7+, che è qualcosa Git non è stato il controllo prima Git 2.3.2+ (Q1 2015)

Questa è fissato con commit 1c2dbf2 da Tom G. Christensen (tgc)

http: supporto ricciolo < 7.10.7

Commit dd61399 introdotto il supporto per proxy HTTP che richiedono l'autenticazione, ma si basa sul CURL_PROXYAUTH opzione che è stato aggiunto in arricciatura 7.10.7.
Ciò assicura che l'autenticazione proxy sia abilitata solo se libcurl può supportarla.

Problemi correlati