git restituisce l'errore http 407 dal proxy dopo CONNECT


95

Ho un problema durante la connessione a GitHub dal mio PC, utilizzando git. Sistema Win 7.

Ho una connessione tramite proxy, quindi l'ho specificato nei file git config (sia nella cartella git generale che nella cartella git repo). Per fare questo ho inserito la riga successiva nel mio git bush:

$ git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>

Il modo in cui funziona su altri programmi (es: maven) sembra così:

<username> - my login to our corp system
<userpsw> -my password to corporat system
<proxy> - 10.65.64.77
<port> - 3128

Ma quando provo a eseguire il push o a clonare il mio repo, ricevo

fatal: unable to access '<repo githup link>' Received HTTP code 407 from proxy after CONNECT

Ho già provato a inserire non solo il mio nome utente ma dominio \ nome utente, ho cambiato la mia password in caso di problemi con le tabelle della lingua del codice. E ho persino inserito una password sbagliata. L'errore è rimasto lo stesso.

Quando sono entrato in '10 .65.64.177.com 'e ho provato a eseguire il push del repository, ho ricevuto:

fatal: unable to access '<repo github link>': Failed connect to github.com:3128; No error

Non so cosa provare.


Duplicato di stackoverflow.com/questions/8561671 ? Vedi la mia risposta lì sul proxy https.
thinkOfaNumber

1
Ho riscontrato lo stesso problema dopo aver aggiornato la password di Windows in un ambiente AD. Risulta che ho dovuto riavviare il mio server proxy (cntlm).
Aaron C

Risposte:


84

Ciò che ha funzionato per me è qualcosa di simile a ciò che propone rohitmohta; nel normale prompt dei comandi DOS (non su git bash):

primo

git config --global http.proxy http://username:password@proxiURL:proxiPort

e in alcuni casi anche

git config --global https.proxy http://username:password@proxiURL:proxiPort

poi

git config --global http.sslVerify false

(Confermo che è necessario: se impostato su true ricevo l'errore "Problema del certificato SSL: impossibile ottenere il certificato dell'emittente locale")

nel mio caso, non c'è bisogno di definire la variabile all_proxy

e infine

git clone https://github.com/someUser/someRepo.git

1
Non avevo bisogno di "git config --global http.sslVerify false", ma questo probabilmente dipende dalla configurazione del proxy.
anre

1
Questa risposta funziona e dovrebbe essere contrassegnata come corretta.
Nadeem Iqbal

Necessario per farlo in git bash non DOS per me. Ho notato che DOS non ha fatto nulla! cioè. controllalo facendo: git config --global -l
theQuestionMan

In che modo la risposta è git config --global http.proxy http://username:password@proxiURL:proxiPortdiversa da quella della domanda git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>se non meno corretta, perché è necessario specificare l' host del proxy , non l' URL ?
Michel Jung

Funziona a
meraviglia

37

Ho dovuto configurare tutte le 4 cose in .gitconfigcon:

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global http.proxy http://user:pass@yourproxy:port
git config --global https.proxy http://user:pass@yourproxy:port

Solo allora la clonazione è andata a buon fine.


Ho provato tutte le opzioni menzionate qui e ancora non funziona per me. :(
Xavier Geoffrey

Perché diavolo stanno tutti proponendo di aggirare la verifica SSL ??? NON È SICURO e potrebbe compromettere il tuo sistema!
flederwiesel

3
@flederwiesel Perché i proxy aziendali sono malvagi e causano ogni sorta di stupidità, come dover memorizzare le credenziali di dominio in chiaro in una mezza dozzina di posti in modo da poter effettivamente accedere alle risorse proxy. E forzando l'uso di certificati radice non sicuri rilasciati dall'azienda o bypassando / ignorando completamente la verifica SSL. È abbastanza triste.
ggranum

36

Forse stai già utilizzando l' impostazione del proxy di sistema - in questo caso, tutti i proxy git non impostati funzioneranno:

git config --global --unset http.proxy
git config --global --unset https.proxy

1
Questo almeno ha impedito la visualizzazione dell'errore e ha generato una richiesta di nome utente / password. A volte sembra che il client git stia impostando il proxy in modo errato. Ho avuto lo stesso errore durante l'utilizzo di SourceTree di Atlassian.
Kelly S. French

Questo ha risolto il problema per me su Ubuntu 14.04 dopo molti grattacapi!
Tim Ebenezer

2
Questo lo ha anche risolto per me quando usavo SourceTree, grazie.
TomSW

Ho ricevuto questo errore durante il tentativo di installare homebrew ... questo ha risolto il mio problema. Grazie.
joeCarpenter

Grazie, questa è l'unica cosa che ha funzionato per me quando lavoro da una posizione remota attraverso il tunnel VPN.
Matt

34

Il seguente comando è necessario per forzare git a inviare le credenziali e il metodo di autenticazione al proxy:

git config --global http.proxyAuthMethod 'basic'

Fonte: https://git-scm.com/docs/git-config#git-config-httpproxyAuthMethod


2
Questo è quello che ha funzionato finalmente per me! dopo aver impostato il proxy nel file di configurazione.
Dhanesh KM

3
Questo era anche il pezzo mancante per me. Grazie. (Normalmente non mi imbatto con i commenti "anch'io", ma questa risposta è piuttosto in basso e ha bisogno di più amore).
ggranum

Questo è esattamente quello che mancava!
ivspenna

Questa è stata l' unica opzione di git config di cui avevo bisogno, poiché la mia variabile d'ambiente https_proxy era impostata in / etc / environment.
Rakurai,

Questo ha funzionato per me, ma senza singoli tick
DeEgge

18

Avevo affrontato un problema simile, dietro il firewall aziendale. Ha fatto quanto segue e in grado di clonare il repository utilizzando la shell git dal mio sistema con Windows 7 SP1.

  1. Imposta la variabile d'ambiente "all_proxy" per il tuo utente. Richiesto da curl.

    export all_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  2. Imposta la variabile d'ambiente "https_proxy" per il tuo utente. Richiesto da curl.

    export https_proxy=http://DOMAIN\proxyuser:proxypwd@proxy.server.com:8080
    
  3. Non sono sicuro che questo abbia qualche impatto. Ma l'ho fatto e ha funzionato:

    git config --global http.sslverify false
    
  4. Usa https: // per la clonazione

    git clone https://github.com/project/project.git
    

Nota-1: non utilizzare http: //. Usarlo può dare il seguente errore. Può essere risolto utilizzando https: //.

 error: RPC failed; result=56, HTTP code = 301

Nota-2: evitare di inserire @ nella password. Può usare $ però.


Puoi usare https_proxy = DOMAIN \ "proxyuser: proxypwd" @ proxy.server.com: 8080 con virgolette doppie e avere una @password nella password.
Vadorequest

1
So che c'è un trucco usando le virgolette in "giro login:password. Ma in realtà ho provato e git ha ignorato le virgolette, quindi @la password la rovina. Se qualcuno ha una soluzione alternativa, penso che valga la pena menzionarla.
Vadorequest

1
Ho provato tutti i comandi suggeriti sopra, ma successivamente ho iniziato a ricevere il codice HTTP 407 ricevuto dal proxy dopo CONNECT.
user130934

1
Puoi codificare in URL qualsiasi carattere speciale. Ad esempio @ diventa% 40. meyerweb.com/eric/tools/dencoder
Bryant

6

Ho avuto lo stesso problema in un ambiente Windows.

Ho appena risolto con NTLM-APS (un server proxy di autenticazione Windows NT)

Configura il tuo proxy NTML e imposta Git su di esso:

git config --global http.proxy http://<username>:<userpsw>@localhost:<port>

3

Aveva l'errore 407 da Android Studio. Ho provato ad aggiungere il proxy, ma non è successo niente. Ho scoperto che era correlato al certificato aziendale, quindi ho esportato quello dal mio browser e l'ho aggiunto a Git.

Esporta da browser web

Opzioni Internet> Contenuti> Certificati> Esporta (segui la procedura guidata, ho scelto il formato "Base 64 codificato X.509 (.CER))

In Git Bash

git config --global http.sslCAInfo c:\Utilities\Certificates\my_certificate

La pagina seguente è stata utile https://blogs.msdn.microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/

Per aggiungere il proxy, come gli altri thread che ho usato

git config --global http.proxy proxy.company.net:8080
git config --global https.proxy proxy.company.net:8080

1
Non sovrascriverei il keystore predefinito "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"ma invece aggiungerei il certificato della tua azienda ad esso (forse in un file separato come descritto nel link).
jansohn

3

Stavo affrontando lo stesso problema, quindi per prima cosa ho controllato il mio file npm cosa ho impostato, l'ho controllato con questo comando: -

npm config get proxy

e scopro di aver impostato un proxy sbagliato e ho impostato il mio proxy del desiderio come segue:

npm config set proxy http://xxx.xxx.xxx.4:8080   
npm config set https-proxy http://xxx.xxx.xxx.4:8080

Dopo di che funziona per me


1
Sei sicuro del comando: "npm config ...", perché immagino che dovrebbe essere "git config ..."
Gaurav Lad

2

La tua password sembra non essere corretta. Ricontrolla le tue credenziali.


1

Ho avuto lo stesso problema nella mia organizzazione.

Dopo molti tentativi, sono arrivato alla seguente soluzione:

  1. Ho chiesto all'amministratore di sistema di cambiare il tipo di autenticazione proxy da Kerberos a NTLM. Non sono sicuro se fosse obbligatorio (sono un ignorante in questa materia), ma la mia domanda è stata approvata.

  2. Dopodiché aggiungo l'impostazione Git

    git config --global http.proxyauthmethod ntlm

Solo dopo sono stato in grado di clonare il mio repository


1

Ho avuto anche lo stesso problema e ho provato a risolverlo impostando esplicitamente http.proxyAuthMethod su basic.

Dopo aver eseguito una traccia pcap tra il mio server e il proxy, ho notato che la richiesta "HTTP CONNECT" inviata al proxy durante un clone git non ha ancora un'intestazione "Proxy-Authorization" impostata su basic. Ciò era dovuto alla mia versione git "1.8.3.1" che non supporta http.proxyAuthMethod.

Dopo aver installato una versione più recente di git (2.16.6), utilizzando i pacchetti rpm trovati qui " https://repo.ius.io/7/x86_64/packages/g/ ", l'impostazione di http.proxyAuthMethod su basic ha avuto finalmente un effetto su git comportamento e quindi il mio clone git ha avuto successo.

Spero che aiuti


0

Penso che dovresti concentrare i tuoi sforzi dopo essere arrivato a questo punto:

fatal: unable to access '<repo githup link>' Received HTTP code 407 from proxy after CONNECT

Ciò significa che non ti sei autenticato correttamente con il proxy. Puoi ricontrollare che la password fornita in questo passaggio sia corretta?

git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>

0

Questo problema si è verificato alcuni giorni fa con i miei repository Bitbucket. Sono stato in grado di risolverlo impostando l'URL remoto su http anziché su https.

Ho anche provato a impostare proxy https nella riga di comando e git config ma non ha funzionato.

$ git pull
fatal: unable to access 'https://username@bitbucket.org/sacgf/x.git/': Received HTTP code 407 from proxy after CONNECT

Nota che stiamo usando https:

$ git remote -v
origin  https://username@bitbucket.org/sacgf/x.git (fetch)
origin  https://username@bitbucket.org/sacgf/x.git (push)

Sostituisci l'URL https con l'URL http:

$ git remote set-url origin http://username@bitbucket.org/sacgf/x.git
$ git pull
Username for 'https://bitbucket.org': username
Password for 'https://username@bitbucket.org': 
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 43 (delta 31), reused 0 (delta 0)
Unpacking objects: 100% (43/43), done.
From http://bitbucket.org/sacgf/x
   a41eb87..ead1a92  master     -> origin/master
First, rewinding head to replay your work on top of it...
Fast-forwarded master to ead1a920caf60dd11e4d1a021157d3b9854a9374.
d

0

Ho riscontrato questo errore a causa della mia rete aziendale che utilizzava un proxy mentre era in sede e un secondo proxy (completamente diverso) quando VPN dall'esterno. Inizialmente ero configurato per il proxy in sede, ho ricevuto l'errore e quindi ho dovuto aggiornare la mia configurazione per utilizzare il proxy alternativo, fuori sede, quando lavoravo altrove.


0

Ho avuto il problema simile e l'ho risolto con i passaggi seguenti:

** Aggiungi i dettagli del proxy in git **

git config --global http.sslVerify false
git config --global https.sslVerify false
git config --global http.proxy http://user:pass@yourproxy:port
git config --global https.proxy http://user:pass@yourproxy:port

0

Questa configurazione funziona nella mia configurazione:

[http]
    proxy = <your proxy>
[https] proxy = <your proxy>
[http]
    sslVerify = false
[https]
    sslVerify = false   
[credential]
    helper = wincred 

0

Avere lo stesso problema durante l'utilizzo di sourcetree Il motivo è stato forse la commutazione del proxy di sistema da on a off mentre sourcetree era aperto. Per qualche motivo questo è stato scritto nel file di configurazione di un progetto. Questo può essere facilmente cancellato tramite Sorgente da "Impostazioni" -> "Modifica file di configurazione". Basta eliminarlo da lì sotto http


0

Ho riscontrato lo stesso problema durante l'utilizzo di Git Bash. Quando ho fatto la stessa cosa nel prompt dei comandi, ha funzionato perfettamente.


0

FYI per le informazioni di tutti

Questa sarebbe stata una soluzione appropriata per risolvere il seguente errore

Received HTTP code 407 from proxy after CONNECT

Quindi dovrebbero essere necessari i seguenti comandi

git config --global http.proxyAuthMethod 'basic'
git config --global https.proxy http://user:pass@proxyserver:port

Che genererebbe la seguente configurazione

$ cat ~/.gitconfig
[http]
        proxy = http://user:pass@proxyserver:port
        proxyAuthMethod = basic

0

Rimuovere "@" dalla password ha funzionato per me e in ogni caso non tenere mai @ nella tua password ti darà problemi con Maven e ulteriori installazioni

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.