GitHub Client Windows dietro proxy

Sto cercando di far funzionare il client GitHub per Windows. Sono su un computer aziendale Win 7 x64 dietro un proxy aziendale e un firewall. Seguendo vari altri post e sperimentando combinazioni multiple di variabili di ambiente e variabili di configurazione, ho trovato che l’unico modo per ottenere la clonazione e il push degli aggiornamenti è utilizzare la variabile di ambiente HTTPS_PROXY, incluso l’ID utente e la password del dominio aziendale completo.

Questo è inaccettabile dal punto di vista della sicurezza. C’è un altro modo per farlo funzionare?

Note aggiuntive:

Il seguente ha funzionato:

  • Aggiungi una variabile di ambiente chiamata HTTPS_PROXY con il valore http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

Quanto segue non ha funzionato:

  • Omissione di ID utente e password dalla variabile HTTPS_PROXY
  • Utilizzando una variabile d’ambiente chiamata HTTP_PROXY (no S )
  • Aggiunta della variabile http.proxy al file di configurazione globale ( .gitconfig )
  • Aggiunta del https.proxy https.proxy al file di configurazione globale

In tutti i casi, il client GitHub non riconosce ancora il proxy: il contenuto del file TheLog.txt mostra sempre quanto segue all’avvio:

 [time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None) [time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy 

Ed è seguito dall’output di diversi tentativi di autenticazione proxy falliti, i quali indicano “Mancano le credenziali”.

Aggiungi queste voci al tuo file ‘.gitconfig’ nella tua directory utente (vai a% USERPROFILE%):

 [http] proxy = http://: [https] proxy = https://: 

E se non vuoi memorizzare la tua password in testo in chiaro, utilizzerei un server di inoltro proxy locale come CNTLM che ti consente di indirizzare tutto il traffico attraverso di esso e può memorizzare l’hash delle password.


A differenza della domanda originale, se non ti interessa se la tua password è in chiaro aggiungili:

 [http] proxy = http://:@: [https] proxy = https://:@: 

Ho provato tutto di sopra – e non ci sono riuscito, solo la cosa che mi ha aiutato è CNTLM – http://cntlm.sourceforge.net/ .

Installalo ed esegui cntlm -H, poi autenticalo a corp proxy, modifica il file cntlm.ini con l’output di cntlm, riavvia il servizio windows. Aggiorna .gitconfig con:

 [https] proxy = localhost:3128 [http] proxy = localhost:3128 

Ora cntlm farà tutta l’autenticazione e sarai in grado di usare GitHub (e Dropbox, btw) dietro il proxy corp. Almeno fino alla prossima modifica della password 🙂 (di nuovo cntlm -H stuff)

Sono stato in grado di far funzionare GitHub Shell con il nostro proxy aziendale. Sto iniziando GitHub Shell ed eseguo il seguente comando:

 export http_proxy=http://:@:3128 

Mi piacerebbe davvero che anche la GUI funzionasse. Ma non voglio impostare la variabile di ambiente globale di Windows che contiene le informazioni sulle credenziali aziendali.

Stranamente GitHub GUI Client è in grado di connettersi a GitHub per l’autenticazione dell’utente, ma il problema è solo con la clonazione, tirando e spingendo i progetti da e verso GitHub. Sembra che il problema sia con l’implementazione git. Sono stato in grado di configurare git per funzionare attraverso il nostro proxy senza inserire le mie credenziali nelle impostazioni globali git e chiedeva le mie credenziali durante l’esecuzione di richieste pull o push. Ma funzionava solo con Git Shell.

Se stai utilizzando GitHub per Windows in un’azienda, è molto probabile che tu sia dietro a un grosso firewall / proxy aziendale difettoso. GitHub per Windows non ha ancora i parametri proxy nella sua interfaccia grafica per l’impostazione delle opzioni.

Per configurare GitHub per Windows per utilizzare il proxy aziendale, modificare il file .gitconfig che si trova in genere in C: \ Users \ .gitconfig o C: \ Documents & Settings \ .gitconfig

Chiudi GitHub per Windows; In .gitconfig, basta aggiungere

[https] proxy = proxy.yourcompany.com:port

Ho anche incontrato questo problema, e ho cercato di approfondirlo un po ‘(disassemblato il client).

La parte di codice che genera i messaggi di registro che stiamo visualizzando è la seguente:

 private static void LogProxyServerConfiguration() { WebProxy defaultProxy = WebProxy.GetDefaultProxy(); string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)"; StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str); try { if (defaultProxy.Credentials == null) { StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]); } else { NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic"); StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName)); } } catch (Exception ex) { StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex); } } 

Quindi questo blocco registra solo le informazioni proxy configurate in IE . Il messaggio di log sembra non avere alcuna relazione con ciò che abbiamo impostato nei file di configurazione o nelle variabili ambientali.

Non so del tuo firewall, ma il mio campus usa il proxy

usi qualche git gui? EDIT : appena notato che stai usando client github per Windows

sto usando il tortoisegit ed è molto facile impostare il proxy. Basta fare clic con il tasto destro del mouse ovunque, tortoisegit> rete, abilitare il server proxy e impostare l’indirizzo del server, il nome utente e la password. fatto

per quanto mi ricordo, il tartarugato funzionerà anche immediatamente con github.

Ecco come impostare proxy in github

 git config --global http.proxy http://:@: git config --global https.proxy http://:@: 

Qui nel mio college non abbiamo username e password, quindi se il nostro college ip è 172.16.10.10 e la porta è 8080

 git config --global http.proxy http://172.16.10.10:8080 git config --global https.proxy http://172.16.10.10:8080 

PS -> Suggerirei di usare questo metodo per impostare il proxy in modo che le cose possano andare a posto mentre imparerai ulteriormente
fonte

Ho trovato questo blog utile. Descrive il proxy ntlmaps . Probabilmente è meno sicuro, ma ha funzionato senza intoppi. Non riuscivo a far funzionare cntlm.

Per noi, la soluzione ha coinvolto due cose diverse. Innanzitutto, come descritto nella risposta di Sogger, è necessario aggiungere le voci al file .gitconfig , situato in %USERPROFILE% .

 [http] proxy = http://: [https] proxy = https://: 

Secondo, (e questo era il pezzo mancante per noi), è necessario configurare un’eccezione sul server proxy per consentire il traffico proxy non autenticato su *.github.com

In iPrism, sembra che questo: inserisci la descrizione dell'immagine qui

Il problema non è tanto il proxy, ma l’ autenticazione . Bypassare i requisiti di autenticazione consente alla comunicazione necessaria di clonare e lavorare con i progetti utilizzando il client desktop GitHub.

Si noti inoltre che questo approccio non ha richiesto la memorizzazione delle credenziali proxy nel file .gitconfig .