Verwendung eines Socks-Proxys mit Git für den HTTP-Transport

Lesezeit: 6 Minuten

Verwendung eines Socks Proxys mit Git fur den HTTP Transport
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:

curl http://git.kernel.org/pub/scm/git/git.git/info/refs?service=git-upload-pack

Aber wie man einen Socks-Proxy mit Git verwendet, um Daten mit dem HTTP-Transportprotokoll wie folgt abzurufen:

git clone http://git.kernel.org/pub/scm/git

  • 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

Verwendung eines Socks Proxys mit Git fur den HTTP Transport
Yang.Y

Ich habe mit Git 1.8.2 und SOCKS v5 Proxy getestet, folgende Einstellung funktioniert für mich:

git config --global http.proxy 'socks5://127.0.0.1:7070'

UPDATE 2017-3-31:

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


1646310486 983 Verwendung eines Socks Proxys mit Git fur den HTTP Transport
Oh ho

Wenn Sie den Proxy nicht als globale Konfiguration festlegen möchten, versuchen Sie es ALL_PROXY= z.B:

$ ALL_PROXY=socks5://127.0.0.1:8888 git clone https://github.com/some/one.git

  • 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):

git config --global http.proxy socks5h://127.0.0.1:1080

Ich verwende den folgenden Befehl, um ein bestimmtes Repository vom Socks5-Proxy zu klonen. Die Proxy-Einstellungen werden mit angegeben --config Möglichkeit.

$ git clone https://github.com/xxxxx --config 'http.proxy=socks5://127.0.0.1:1234'

1646310487 614 Verwendung eines Socks Proxys mit Git fur den HTTP Transport
Patthoyts

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 ...

Der notwendige Patch:

diff --git a/http.c b/http.c
index 3b312a8..f34cc75 100644
--- a/http.c
+++ b/http.c
@@ -322,6 +322,14 @@ static CURL *get_curl_handle(void)
        if (curl_http_proxy) {
                curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
                curl_easy_setopt(result, CURLOPT_PROXYAUTH, CURLAUTH_ANY);
+#if LIBCURL_VERSION_NUM >= 0x071800
+               if (!strncmp("socks5", curl_http_proxy, 6))
+                       curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
+               else if (!strncmp("socks4a", curl_http_proxy, 7))
+                       curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4A);
+               else if (!strncmp("socks", curl_http_proxy, 5))
+                       curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+#endif
        }

        return result;

  • 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

Verwendung eines Socks Proxys mit Git fur den HTTP Transport
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:


  1. Mach einen Tunnel (dynamische Portweiterleitung) rüber SOCKS5 Protokoll verwenden ssh:
    ssh -ND 9994 user@YourSshServer

  1. Installieren proxychains auf Ihrem Localhost, nicht auf dem SSH-Server, mit dem Sie verbunden sind:

  1. 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

  1. Jetzt sind wir bereit, a zu tun git Befehl (proxychains muss vor dem Befehl stehen):
    proxychains git push origin develop

923370cookie-checkVerwendung eines Socks-Proxys mit Git für den HTTP-Transport

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy