git gibt den http-Fehler 407 vom Proxy nach CONNECT zurück

94

Ich habe ein Problem beim Herstellen einer Verbindung zu Github von meinem PC mit Git. System Win 7.

Ich habe eine Verbindung über einen Proxy, daher habe ich sie in Git-Konfigurationsdateien angegeben (sowohl im allgemeinen Git-Ordner als auch im Git-Repo-Ordner). Dazu habe ich die nächste Zeile zu meinem Git-Busch eingegeben:

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

So wie es mit anderen Programmen funktioniert (zB: maven) sieht es so aus:

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

Aber wenn ich versuche, mein Repo zu pushen oder zu klonen, erhalte ich

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

Ich versuche bereits, nicht nur meinen Benutzernamen, sondern auch Domain \ Benutzername einzugeben und habe mein Passwort geändert, falls es Probleme mit Code-Sprachtabellen gibt. Und ich habe sogar ein falsches Passwort eingegeben. Fehler blieb gleich.

Als ich in '10 .65.64.177.com 'eintrat und versuchte, Repo zu pushen, erhielt ich:

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

Ich weiß nur nicht, was ich versuchen soll.

Olga Chernyavskaya
quelle
Duplikat von stackoverflow.com/questions/8561671 ? Siehe meine Antwort dort über https Proxy.
thinkOfaNumber
1
Ich hatte das gleiche Problem, nachdem ich mein Windows-Kennwort in einer AD-Umgebung aktualisiert hatte. Es stellte sich heraus, dass ich nur meinen Proxyserver (cntlm) neu starten musste.
Aaron C

Antworten:

84

Was für mich funktioniert hat, ähnelt dem, was Rohitmohta vorschlägt. in der regulären DOS-Eingabeaufforderung (nicht bei Git Bash):

zuerst

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

und in einigen Fällen auch

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

dann

git config --global http.sslVerify false

(Ich bestätige, dass dies erforderlich ist: Wenn der Wert auf "true" gesetzt ist, wird der Fehler "SSL-Zertifikatsproblem: Lokales Ausstellerzertifikat kann nicht abgerufen werden" angezeigt.)

In meinem Fall muss die Variable all_proxy nicht definiert werden

und schlussendlich

git clone https://github.com/someUser/someRepo.git
Vincent F.
quelle
1
Ich brauchte nicht "git config --global http.sslVerify false", aber dies hängt wahrscheinlich von der Proxy-Konfiguration ab.
Anre
1
Diese Antwort funktioniert und sollte als richtig markiert werden.
Nadeem Iqbal
Musste es in Git Bash tun, nicht DOS für mich. Mir ist aufgefallen, dass DOS nichts getan hat! dh. Überprüfen Sie es, indem Sie Folgendes tun: git config --global -l
theQuestionMan
Wie unterscheidet sich die Antwort git config --global http.proxy http://username:password@proxiURL:proxiPortvon der Frage, git config --global http.proxy http://<username>:<userpsw>@<proxy>:<port>außer dass sie weniger korrekt ist, da der Proxy- Host und nicht die URL angegeben werden muss ?
Michel Jung
Funktioniert wie Charme
Polycarp Kavoo
37

Ich musste Setup 4 Aktivitäten in .gitconfigmit:

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

Erst dann war das Klonen erfolgreich.

Miroslav Mocek
quelle
Ich habe alle hier genannten Optionen ausprobiert und es funktioniert immer noch nicht für mich. :(
Xavier Geoffrey
Warum zum Teufel schlagen alle vor, die SSL-Überprüfung zu umgehen? Dies ist unsicher und kann Ihr System gefährden!
Flederwiesel
3
@flederwiesel Weil Unternehmens-Proxys böse sind und allerlei Dummheit verursachen - zum Beispiel, dass Sie Ihre Domain-Anmeldeinformationen an einem halben Dutzend Stellen im Klartext speichern müssen, damit Sie tatsächlich auf Proxy-Ressourcen zugreifen können. Und die Verwendung unsicherer, vom Unternehmen ausgestellter Stammzertifikate erzwingen - oder die SSL-Überprüfung vollständig umgehen / ignorieren. Es ist ziemlich traurig.
Granum
35

Vielleicht verwenden Sie bereits die System - Proxy - Einstellung - in diesem Fall ungesetzt alle git Proxys funktionieren wird:

git config --global --unset http.proxy
git config --global --unset https.proxy
rekinyz
quelle
1
Dies verhinderte zumindest das Auftreten des Fehlers und erzeugte eine Eingabeaufforderung für Benutzername / Passwort. Es scheint, dass der Git-Client den Proxy manchmal standardmäßig falsch einstellt. Bei der Verwendung von SourceTree by Atlassian ist der gleiche Fehler aufgetreten.
Kelly S. French
Dies löste das Problem für mich unter Ubuntu 14.04 nach viel Kopfkratzen!
Tim Ebenezer
2
Dies hat es auch für mich bei der Verwendung von SourceTree gelöst, danke.
TomSW
Ich habe diesen Fehler beim Versuch, Homebrew zu installieren, erhalten ... dies hat mein Problem gelöst. Vielen Dank.
JoeCarpenter
Vielen Dank, dies ist das einzige, was für mich funktioniert hat, wenn ich von einem entfernten Standort über einen VPN-Tunnel gearbeitet habe.
Matt
32

Der folgende Befehl wird benötigt, um git zu zwingen, die Anmeldeinformationen und die Authentifizierungsmethode an den Proxy zu senden:

git config --global http.proxyAuthMethod 'basic'

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

Marijus Ravickas
quelle
2
Das hat bei mir endlich funktioniert! nach dem Einstellen des Proxys in der Konfigurationsdatei.
Dhanesh KM
3
Dies war auch das fehlende Stück für mich. Danke dir. (Normalerweise stoße ich nicht auf "Ich auch" -Kommentare, aber diese Antwort ist ziemlich weit unten und braucht mehr Liebe).
Granum
Genau das hat gefehlt!
ivspenna
Dies war die einzige Git-Konfigurationsoption, die ich benötigte, da meine Umgebungsvariable https_proxy in / etc / environment festgelegt wurde.
Rakurai
Das hat bei mir funktioniert, aber ohne einzelne Zecken
DeEgge
18

Ich hatte ein ähnliches Problem hinter der Unternehmensfirewall. Hat Folgendes getan und konnte das Repository mithilfe der Git-Shell von meinem System unter Windows 7 SP1 klonen.

  1. Legen Sie die Umgebungsvariable 'all_proxy' für Ihren Benutzer fest. Erforderlich durch Locken.

    export all_proxy=http://DOMAIN\proxyuser:[email protected]:8080
    
  2. Legen Sie die Umgebungsvariable 'https_proxy' für Ihren Benutzer fest. Erforderlich durch Locken.

    export https_proxy=http://DOMAIN\proxyuser:[email protected]:8080
    
  3. Ich bin mir nicht sicher, ob dies Auswirkungen hat. Aber ich habe das getan und es hat funktioniert:

    git config --global http.sslverify false
    
  4. Verwenden Sie zum Klonen https: //

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

Hinweis 1: Verwenden Sie nicht http: //. Wenn Sie dies verwenden, kann der folgende Fehler auftreten. Es kann mit https: // behoben werden.

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

Hinweis 2: Vermeiden Sie @ in Ihrem Passwort. Kann aber $ verwenden.

Rohitmohta
quelle
Sie können https_proxy = DOMAIN \ "proxyuser: proxypwd" @ proxy.server.com: 8080 mit doppelten Anführungszeichen und einem @Kennwort verwenden.
Vadorequest
1
Ich weiß , dass es ein Trick ist , Anführungszeichen "um login:password. Aber ich habe tatsächlich versucht und git hat die Anführungszeichen ignoriert, also hat das @im Passwort durcheinander gebracht. Wenn jemand eine Problemumgehung hat, ist es meiner Meinung nach erwähnenswert.
Vadorequest
1
Ich habe alle oben vorgeschlagenen Befehle ausprobiert, aber danach habe ich nach CONNECT den empfangenen HTTP-Code 407 vom Proxy erhalten.
user130934
1
Sie können beliebige Sonderzeichen per URL codieren. Zum Beispiel wird @ zu% 40. meyerweb.com/eric/tools/dencoder
Bryant
6

Ich hatte das gleiche Problem in einer Windows-Umgebung.

Ich habe gerade mit NTLM-APS (einem Windows NT-Authentifizierungs-Proxyserver) gelöst.

Konfigurieren Sie Ihren NTML-Proxy und setzen Sie Git darauf:

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

Hatte den 407 Fehler von Android Studio. Es wurde versucht, den Proxy hinzuzufügen, aber es ist nichts passiert. Ich habe herausgefunden, dass es sich um ein Unternehmenszertifikat handelt, also habe ich das Zertifikat aus meinem Browser exportiert und zu Git hinzugefügt.

Aus Webbrowser exportieren

Internetoptionen> Inhalt> Zertifikate> Exportieren (Befolgen Sie den Assistenten, ich habe das Format "Base 64-codiertes X.509 (.CER)" gewählt.)

In Git Bash

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

Die folgende Seite war nützlich https://blogs.msdn.microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/

So fügen Sie den Proxy hinzu, wie die anderen Threads, die ich verwendet habe

git config --global http.proxy proxy.company.net:8080
git config --global https.proxy proxy.company.net:8080
Beaumondo
quelle
1
Ich würde den Standard-Keystore nicht überschreiben, "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"sondern stattdessen das Zertifikat Ihres Unternehmens hinzufügen (möglicherweise in einer separaten Datei, wie im Link beschrieben).
jansohn
3

Ich hatte das gleiche Problem, also habe ich zuerst meine npm-Datei überprüft, was ich eingestellt habe. Ich habe sie mit folgendem Befehl überprüft: -

npm config get proxy

und ich finde heraus, dass ich einen falschen Proxy eingestellt habe und ich stelle meinen Wunsch-Proxy wie folgt ein:

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

Danach funktioniert es bei mir

user1989488
quelle
1
Sind Sie sicher über den Befehl: "npm config ...", weil ich denke, es sollte "git config ..." sein
Gaurav Lad
2

Ihr Passwort scheint falsch zu sein. Überprüfen Sie Ihre Anmeldeinformationen erneut.

Neo China
quelle
1

Ich hatte das gleiche Problem in meiner Organisation.

Nach vielen Versuchen kam ich zu folgender Lösung:

  1. Ich habe beim Systemadministrator beantragt, den Proxy-Authentifizierungstyp von Kerberos in NTLM zu ändern. Ich bin nicht sicher, ob es obligatorisch war (ich bin in dieser Angelegenheit ein Ignorant), aber mein Antrag wurde genehmigt.

  2. Danach füge ich die Git-Einstellung hinzu

    git config --global http.proxyauthmethod ntlm

Erst danach konnte ich mein Repository klonen

Кирилл Захаров
quelle
1

Ich hatte auch das gleiche Problem und versuchte es zu lösen, indem ich die http.proxyAuthMethod explizit auf basic setzte.

Nachdem ich einen PCAP-Trace zwischen meinem Server und dem Proxy ausgeführt hatte, stellte ich fest, dass für die "HTTP CONNECT" -Anforderung, die während eines Git-Klons an den Proxy gesendet wurde, immer noch kein "Proxy-Authorization" -Header auf "Basic" gesetzt ist. Dies lag an meiner Git-Version "1.8.3.1", die http.proxyAuthMethod nicht unterstützt.

Nach der Installation einer neuesten Git-Version (2.16.6) können Sie die RPM-Pakete hier " https://repo.ius.io/7/x86_64/packages/g/" verwenden. " die Einstellung von http.proxyAuthMethod auf Basic schließlich Auswirkungen auf Git Verhalten und dann war mein Git-Klon erfolgreich.

ich hoffe das hilft

marwaneL
quelle
0

Ich denke, Sie sollten Ihre Bemühungen konzentrieren, nachdem Sie diesen Punkt erreicht haben:

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

Dies bedeutet, dass Sie sich beim Proxy nicht ordnungsgemäß authentifiziert haben. Können Sie überprüfen, ob das in diesem Schritt angegebene Passwort korrekt ist?

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

Dieses Problem trat vor einigen Tagen bei meinen Bitbucket-Repositorys auf. Ich konnte das Problem beheben, indem ich die Remote-URL auf http anstatt auf https setzte.

Ich habe auch versucht, https-Proxys in der Befehlszeile und in der Git-Konfiguration festzulegen, aber das hat nicht funktioniert.

$ git pull
fatal: unable to access 'https://[email protected]/sacgf/x.git/': Received HTTP code 407 from proxy after CONNECT

Beachten Sie, dass wir https verwenden:

$ git remote -v
origin  https://[email protected]/sacgf/x.git (fetch)
origin  https://[email protected]/sacgf/x.git (push)

Ersetzen Sie die https-URL durch die http-URL:

$ git remote set-url origin http://[email protected]/sacgf/x.git
$ git pull
Username for 'https://bitbucket.org': username
Password for 'https://[email protected]': 
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
Dave Lawrence
quelle
0

Ich habe diesen Fehler festgestellt, weil mein Unternehmensnetzwerk einen Proxy vor Ort und einen zweiten (völlig anderen) Proxy verwendet hat, wenn das VPN von außen erfolgt. Ich war ursprünglich für den On-Premise-Proxy konfiguriert, habe den Fehler erhalten und musste dann meine Konfiguration aktualisieren, um den alternativen Off-Prem-Proxy zu verwenden, wenn ich anderswo arbeite.

Shawn
quelle
0

Ich hatte das ähnliche Problem und löste es mit den folgenden Schritten:

** Proxy-Details in Git hinzufügen **

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
Sairam Kukadala
quelle
0

Diese Konfiguration funktioniert in meinem Setup:

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

Haben Sie das gleiche Problem bei der Verwendung von Sourcetree. Grund war möglicherweise das Ein- und Ausschalten des Systemproxys, während Sourcetree geöffnet war. Aus irgendeinem Grund wurde dies in die Konfigurationsdatei eines Projekts geschrieben. Dies kann einfach über Sourcetree über "Einstellungen" -> "Konfigurationsdatei bearbeiten" gelöscht werden. Löschen Sie es einfach unter http

Ska
quelle
0

Ich habe das gleiche Problem bei der Verwendung von Git Bash festgestellt. Als ich dasselbe in der Eingabeaufforderung gemacht habe, hat es perfekt funktioniert.

Daniel
quelle
0

Zu Ihrer Information für alle Informationen

Dies wäre eine geeignete Lösung gewesen, um den folgenden Fehler zu beheben

Received HTTP code 407 from proxy after CONNECT

Daher sollten die folgenden Befehle erforderlich sein

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

Welches würde die folgende Konfiguration erzeugen

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

Das Entfernen von "@" aus dem Passwort hat bei mir funktioniert und auf keinen Fall @ in Ihrem Passwort behalten. Dies führt zu Problemen mit Maven und der weiteren Installation

Codiee
quelle