Verwendung eines Socks-Proxys mit Git für den HTTP-Transport
Lesezeit: 6 Minuten
Yves Bluseau
Wie kann man Git dazu bringen, einen Socks-Proxy für den HTTP-Transport zu verwenden?
Es gelingt mir, git mit GIT_PROXY_COMMAND zu konfigurieren, um einen Socks-Proxy für den GIT-Transport zu verwenden.
Außerdem habe ich meine .curlrc-Datei so konfiguriert, dass sie den SOCKS-Proxy definiert, und ich kann Informationen direkt mit dem Curl-Befehl wie folgt abrufen:
Laut Dokumenttrotz des Namens http.proxy, sollte es sowohl für HTTP- als auch für HTTPS-Repository-URLs funktionieren. Danke @user für den Hinweis.
UPDATE 2018-11-27:
Führen Sie den folgenden Befehl aus, um den Proxy zu deaktivieren:
git config --global --unset http.proxy
EDIT 04.03.2019:
Wenn Sie auch möchten, dass der Hostname über den Proxy aufgelöst wird, verwenden Sie die unten stehende Lösung von thuzhf, die verwendet socks5h anstatt socks5
brantyoung, danke! Ich vergesse Internetverbindung zu bezahlen und hatte keine externe Verbindung. Ich habe einen anderen Server als Gateway verwendet mit: ssh -D 4000 @server -p und konnte das Projekt erfolgreich auf github hochladen über: git config http.proxy ‘socks5://localhost:4000’. Danke.
– Benutzer1630938
1. Oktober 2013 um 10:21 Uhr
Wie entschärfe ich? stelle ich auf ”?
– Briankip
2. Februar 2016 um 12:56 Uhr
@briankip offen ~/.gitconfig und entfernen [https.proxy] und [http.proxy] Abschnitte, es ist ein ini Datei, Sie können sie gerne bearbeiten.
– Yang.Y
2. Februar 2016 um 13:15 Uhr
@briankip, ich denke, Sie können es einfach in die Befehlszeile einfügen, anstatt es dauerhaft in Ihre Konfiguration aufzunehmen, z git -c http.proxy=socks5://127.0.0.1:7070, oder etwas ähnliches. Vielleicht könntest du dir einen Alias machen gitsocks dazu, was es dir erlauben würde, Git mit und ohne Socken nach Belieben leicht zu nennen
– Aaron McDaid
14. Juli 2016 um 9:18 Uhr
Ich konnte dies erst zum Laufen bringen, nachdem ich das Protokoll auf ‚socks5h://“ (das „h“ steht für Hostnamenauflösung; vgl man 1 curl. “Macht es zum Äquivalent von –socks5-hostname”)
– Wyatt Ward
10. Juni 2017 um 2:50 Uhr
Oh ho
Wenn Sie den Proxy nicht als globale Konfiguration festlegen möchten, versuchen Sie es ALL_PROXY= z.B:
Danke! das hilft mir wirklich, während das globale nicht tut.
– Redreamalität
18. Dezember 2015 um 15:13 Uhr
Danke! FUNKTIONIERT WIRKLICH!
– smoothdvd
23. August 2016 um 1:35 Uhr
Danke. Leichte Modifikation für mich: ALL_PROXY=socks5h:… (beachten Sie das ‘h’ — um die Adressauflösung im Socks-Server durchzuführen)
– Tomi Ollila
22. Februar um 9:21 Uhr
(Nur eine kleine Erinnerung) Wenn Sie möchten, dass der Hostname auch vom Proxy aufgelöst wird (dh alles durch den Proxy leiten), besonders wenn Sie a Kernkönnen Sie die folgende Einstellung verwenden (der Schlüssel ist, dass sie verwendet socken5h anstatt Socken5):
Ich verwende den folgenden Befehl, um ein bestimmtes Repository vom Socks5-Proxy zu klonen. Die Proxy-Einstellungen werden mit angegeben --config Möglichkeit.
Hinweis: Der Patch hier wurde 2015 für Version 2.4.11 auf Git angewendet. Seitdem können Sie nur noch Socks://-URLs mit den http.proxy-Konfigurationseinstellungen verwenden.
Für das git://-Protokoll haben wir Verwenden von Git mit einem SOCKS-Proxy. Es scheint jedoch, dass Git Socks-Proxys nicht richtig unterstützt. git selbst ist mit libcurl verlinkt. Die .curlrc-Datei wird also nicht verwendet (nur für den Curl-Befehlszeilenclient). Der folgende Patch bietet jedoch die nötige Unterstützung. Wenn dieser Patch auf Git angewendet wird, können wir einfach die Umgebungsvariable ALL_PROXY oder HTTP_PROXY oder HTTPS_PROXY auf setzen socks://hostname:portnum (oder socks4/socks5) oder tatsächlich die http.proxy-Git-Konfigurationseinstellung und libcurl verwenden jetzt tatsächlich das Socks-Protokoll, wenn der Proxy verwendet wird.
Zum Beispiel ein aktiver Trace:
$ GIT_CURL_VERBOSE=1 bin-wrappers/git -c "http.proxy=socks://localhost:1080" ls-remote http://github.com/patthoyts/tclftd2xx.git
* Couldn't find host github.com in the _netrc file; using defaults
* About to connect() to proxy localhost port 1080 (#0)
* Trying 127.0.0.1...
* connected
* SOCKS4 request granted.
* Connected to localhost (127.0.0.1) port 1080 (#0)
> GET /patthoyts/tclftd2xx.git/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.8.1.msysgit.1.dirty
... and on to a successful request ...
Wie ich geschrieben habe, ist es mir gelungen, Git so zu konfigurieren, dass der SOCKS-Proxy für den GIT-Transport verwendet wird. Was ich möchte, ist die Verwendung von Git mit einem SOCKS-Proxy für den HTTP(S)-Transport
– Yves Blusseau
6. März 2013 um 7:56 Uhr
Paul H
Nur in Bezug auf @briankip und das Entfernen der HTTP-Proxy-Einstellung, wie von Yang.Y erwähnt, können Sie die INI-Datei direkt bearbeiten.
Sie können dies auch in der Befehlszeile mit tun
git config --global --unset http.proxy
Um zu bestätigen, dass es entfernt wurde, listen Sie die aktuelle Konfiguration mit auf
git config --list
Wie ich geschrieben habe, ist es mir gelungen, Git so zu konfigurieren, dass der SOCKS-Proxy für den GIT-Transport verwendet wird. Was ich möchte, ist die Verwendung von Git mit einem SOCKS-Proxy für den HTTP(S)-Transport
– Yves Blusseau
6. März 2013 um 7:56 Uhr
Keine der vorgeschlagenen Methoden hat bei mir funktioniert, daher habe ich einen anderen Ansatz als die folgende Anweisung gefunden:
Bearbeiten Sie Ihre proxychains Konfigurationsdatei: sudo nano /etc/proxychains.conf Fügen Sie dann am Ende der Datei die folgende Zeile hinzu: socks5 127.0.0.1 9994
Jetzt sind wir bereit, a zu tun git Befehl (proxychains muss vor dem Befehl stehen): proxychains git push origin develop
9233700cookie-checkVerwendung eines Socks-Proxys mit Git für den HTTP-Transportyes
Die Antwort von Patthoyts unten wird offiziell in Git 2.7 (Dezember 2015) unterstützt: stackoverflow.com/a/34118102/6309
– VonC
6. Dezember 2015 um 14:04 Uhr
stackoverflow.com/questions/10274879/…
– Ciro Santilli 新疆再教育营六四事件法轮功郝海东
13. Mai 2017 um 19:50 Uhr