Wie kann Git einen Socken-Proxy für den HTTP-Transport verwenden?
Es gelingt mir, git mit GIT_PROXY_COMMAND so zu konfigurieren, dass ein Socken-Proxy für den GIT-Transport verwendet wird.
Außerdem habe ich meine .curlrc-Datei so konfiguriert, dass sie den Socken-Proxy definiert, und ich kann Informationen direkt mit dem Befehl curl abrufen, z.
curl http://git.kernel.org/pub/scm/git/git.git/info/refs?service=git-upload-pack
Aber wie man einen Socken-Proxy mit Git verwendet, um Daten mit dem HTTP-Transportprotokoll abzurufen, wie:
git clone http://git.kernel.org/pub/scm/git
Antworten:
Ich habe mit Git 1.8.2 und SOCKS v5 Proxy getestet. Die folgende Einstellung funktioniert für mich:
git config --global http.proxy 'socks5://127.0.0.1:7070'
UPDATE 2017-3-31:
Laut dem Dokument trotz des Namens
http
.proxy
sowohl für HTTP- als auch für HTTPS-Repository-URLs funktionieren. Vielen Dank an @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 2019-03-04:
Wenn Sie auch möchten, dass der Hostname mithilfe des Proxys aufgelöst wird, verwenden Sie die folgende Lösung von thuzhf, die
socks5h
anstelle von verwendet wirdsocks5
quelle
~/.gitconfig
und entfernen[https.proxy]
und[http.proxy]
Abschnitte, es ist eineini
Datei, können Sie sie bearbeiten.git -c http.proxy=socks5://127.0.0.1:7070
oder so ähnlich. Vielleicht könnten Sie einen Aliasgitsocks
dafür erstellen, der es Ihnen ermöglicht, Git mit und ohne Socken wie gewünscht anzurufen "Wenn Sie den Proxy nicht als globale Konfiguration festlegen möchten, versuchen Sie
ALL_PROXY=
Folgendes:quelle
(Nur eine kleine Erinnerung) Wenn Sie möchten, dass der Hostname auch vom Proxy aufgelöst wird ( dh , dass alles durch den Proxy geleitet wird ), insbesondere wenn Sie einen Kern klonen , können Sie die folgende Einstellung verwenden (der Schlüssel ist, dass stattdessen socks5h verwendet wird von Socken5 ):
quelle
Ich verwende den folgenden Befehl, um ein bestimmtes Repository vom socks5-Proxy zu klonen. Die Proxy-Einstellungen werden mit
--config
Option angegeben.quelle
Hinweis: Der Patch hier wurde 2015 für Version 2.4.11 auf Git angewendet. Seitdem können Sie einfach socks: // urls mit den Konfigurationseinstellungen von http.proxy verwenden.
Für das git: // Protokoll haben wir Using Git mit einem SOCKS-Proxy . Es scheint jedoch, dass Git Socken-Proxys nicht richtig unterstützt. Git selbst ist mit libcurl verknüpft. Daher wird die .curlrc-Datei nicht verwendet (dies gilt nur für den Curl-Befehlszeilenclient). Der folgende Patch bietet jedoch die erforderliche Unterstützung. Mit diesem Patch, der auf git angewendet wird, können wir einfach die Umgebungsvariable ALL_PROXY oder HTTP_PROXY oder HTTPS_PROXY auf
socks://hostname:portnum
(oder socks4 / socks5) setzen, oder die Konfigurationseinstellung http.proxy git und libcurl verwenden jetzt tatsächlich das socks-Protokoll, wenn der Proxy verwendet wird.Zum Beispiel eine aktive Ablaufverfolgung:
Der notwendige Patch:
quelle
Nur in Bezug auf @briankip und Entfernen der http-Proxy-Einstellung, wie Yang.Y erwähnt hat, 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
quelle
Keine der vorgeschlagenen Methoden funktionierte für mich, daher fand ich einen anderen Ansatz als die folgende Anweisung:
SOCKS5
Protokoll mitssh
:ssh -ND 9994 user@YourSshServer
proxychains
auf Ihrem lokalen Host, nicht auf dem SSH-Server, mit dem Sie verbunden sind:apt-get
:sudo apt-get install proxychains
Überprüfen Sie den Abschnitt Installation in der Readme-Datei.
So setzen Sie den socks5-Proxy auf Firefox
proxychains
Konfigurationsdatei: Fügen Siesudo nano /etc/proxychains.conf
am Ende der Datei die folgende Zeile hinzu:socks5 127.0.0.1 9994
git
Befehl ausführen (proxychains
muss vor dem Befehl stehen):proxychains git push origin develop
quelle