Zum Inhalt springen
GProxy
Registrierung
Гайды 6 Min. Lesezeit 29 Aufrufe

Git Proxy Einrichtung

Lernen Sie, Git für den Zugriff auf Proxyserver zu konfigurieren. Dieser Leitfaden deckt die Einrichtung für Clone-, Push-

Git Proxy Einrichtung

Die Git-Proxy-Einrichtung umfasst die Konfiguration der http.proxy- und https.proxy-Einstellungen von Git, die Nutzung von Umgebungsvariablen wie HTTP_PROXY und HTTPS_PROXY oder die Verwendung von ProxyCommand in SSH-Konfigurationen für SSH-basierte Git-Operationen, um den Datenverkehr über einen Vermittlungsserver zu leiten.

Git-Proxy-Anforderungen verstehen

Unternehmensfirewalls, Netzwerksicherheitsrichtlinien oder eingeschränkter Internetzugang erfordern oft, den Git-Datenverkehr über einen Proxyserver zu leiten. Dies gilt für Operationen wie git clone, git fetch, git pull und git push. Die Konfigurationsmethode hängt vom Git-URL-Protokoll ab: https:// (oder http://) verwendet HTTP/HTTPS-Proxys, während ssh:// (oder git@) SSH-spezifische Proxy-Methoden verwendet.

HTTP/HTTPS Git-Proxy-Konfiguration

Für Git-Repositories, auf die über https://- oder http://-URLs zugegriffen wird, verwendet Git HTTP/HTTPS-Proxy-Einstellungen.

Git-Konfigurationsmethode (git config)

Dies ist die empfohlene Methode zur Konfiguration von HTTP/HTTPS-Proxys für Git. Die Einstellungen können global (für alle Repositories) oder spezifisch für ein einzelnes Repository sein.

Globale Konfiguration

Um einen Proxy global für alle Git-Repositories auf einem System zu konfigurieren:

# Für HTTP-Proxy (z.B. für https://github.com URLs über einen HTTP-Proxy)
git config --global http.proxy http://proxy.example.com:8080

# Für HTTPS-Proxy (z.B. für https://github.com URLs über einen HTTPS-Proxy)
# Hinweis: Oft wird ein HTTPS-Proxy ähnlich wie ein HTTP-Proxy konfiguriert,
# aber der Datenverkehr wird explizit getunnelt.
git config --global https.proxy http://proxy.example.com:8080

Wenn der Proxy eine Authentifizierung erfordert:

git config --global http.proxy http://username:password@proxy.example.com:8080
git config --global https.proxy http://username:password@proxy.example.com:8080

Aus Sicherheitsgründen kann Git, anstatt das Passwort direkt in die URL einzubetten, zur Eingabe von Anmeldeinformationen auffordern oder diese von einem Anmeldeinformationshelfer abrufen. Das Weglassen des Passworts führt dazu, dass Git danach fragt.

Pro-Repository-Konfiguration

Um einen Proxy für ein bestimmtes Repository zu konfigurieren, navigieren Sie in das Stammverzeichnis des Repositorys und lassen Sie das --global-Flag weg:

cd /path/to/my/repo
git config http.proxy http://proxy.example.com:8080
git config https.proxy http://proxy.example.com:8080

Diese Einstellungen werden in der .git/config-Datei dieses Repositorys gespeichert.

Proxy für bestimmte Hosts deaktivieren

Um den Proxy für bestimmte Domains (z.B. interne Git-Server) zu umgehen, verwenden Sie http.noProxy:

git config --global http.noProxy "localhost,127.0.0.1,*.internal.com"

Mehrere Hosts können durch Kommas getrennt werden.

SSL-Zertifikatsprüfung

In Unternehmensumgebungen, die transparente oder abfangende Proxys (MITM-Proxys) verwenden, kann die SSL-Zertifikatsprüfung von Git fehlschlagen, da der Proxy sein eigenes Zertifikat anstelle des des Ursprungsservers präsentiert.

Um dies zu beheben, konfigurieren Sie Git so, dass es dem Unternehmens-Root-CA-Zertifikat vertraut:

git config --global http.sslCAInfo /path/to/corporate/ca-cert.pem

Alternativ, und nicht empfohlen für Produktionsumgebungen aufgrund von Sicherheitsrisiken, kann die SSL-Verifizierung deaktiviert werden:

git config --global http.sslVerify false

Dies umgeht die Zertifikatsvalidierung und macht Verbindungen anfällig für tatsächliche Man-in-the-Middle-Angriffe. Verwenden Sie dies nur für temporäres Debugging oder in kontrollierten, isolierten Umgebungen.

Umgebungsvariablen

Befehlszeilentools, einschließlich curl (das Git oft für HTTP/HTTPS-Übertragungen verwendet), respektieren typischerweise die Umgebungsvariablen HTTP_PROXY, HTTPS_PROXY und NO_PROXY. Diese Variablen bieten eine systemweite oder sitzungsweite Proxy-Einstellung, die Anwendungen erben können.

# Für HTTP-Proxy
export HTTP_PROXY="http://proxy.example.com:8080"
export HTTPS_PROXY="http://proxy.example.com:8080" # Oft dasselbe für HTTPS-Datenverkehrstunneling

# Für SOCKS-Proxy
export ALL_PROXY="socks5://proxy.example.com:1080"

# Bestimmte Hosts vom Proxy ausschließen
export NO_PROXY="localhost,127.0.0.1,*.internal.com"

Beachten Sie, dass die http.proxy- und https.proxy-Konfigurationen von Git Vorrang vor diesen Umgebungsvariablen für die eigenen HTTP/HTTPS-Operationen von Git haben. Umgebungsvariablen sind nützlich, wenn git config nicht explizit gesetzt ist, oder für andere Tools, die mit Git interagieren.

Vergleich: git config vs. Umgebungsvariablen

Feature git config http.proxy / https.proxy HTTP_PROXY / HTTPS_PROXY Umgebungsvariablen
Geltungsbereich Git-spezifisch (global oder pro-Repository) Systemweit oder sitzungsweit für Anwendungen, die sie respektieren
Vorrang Höher für Git-Operationen; überschreibt Umgebungsvariablen. Niedriger für Git; dient als Fallback oder für andere Tools.
Persistenz Persistent über Sitzungen hinweg (gespeichert in .gitconfig oder .git/config). Standardmäßig nicht persistent; erfordert das Hinzufügen zum Shell-Profil (.bashrc, .zshrc) für Persistenz.
Authentifizierung Unterstützt username:password@ in der URL oder fordert Anmeldeinformationen an. Unterstützt username:password@ in der URL.
Flexibilität Granulare Kontrolle pro Git-Repository. Breitere Auswirkungen auf alle Anwendungen, die die Variablen respektieren.

SSH Git-Proxy-Konfiguration

Für Git-Repositories, auf die über ssh://- oder git@-URLs zugegriffen wird, wird die Proxy-Einrichtung über die SSH-Client-Konfiguration verwaltet, insbesondere unter Verwendung der ProxyCommand-Direktive in ~/.ssh/config. Standard-HTTP/HTTPS-Proxy-Einstellungen (z.B. http.proxy) beeinflussen SSH-Verbindungen nicht.

Verwendung von ~/.ssh/config mit ProxyCommand

Der ProxyCommand weist SSH an, eine Verbindung zum Zielhost (%h) und Port (%p) herzustellen, indem er diese zuerst über einen externen Befehl, typischerweise einen Proxy-Client, leitet.

Voraussetzungen

  • netcat (nc): Für grundlegendes TCP-Tunneling und SOCKS-Proxys.
  • corkscrew oder connect-proxy: Zum Tunneln von SSH durch HTTP/HTTPS-Proxys, die eine Authentifizierung erfordern.

HTTP/HTTPS-Proxy-Tunneling

Wenn Ihr Proxy ein HTTP/HTTPS-Proxy ist, können Sie corkscrew oder connect-proxy verwenden.

  1. Installieren Sie corkscrew oder connect-proxy (falls noch nicht vorhanden).

    • Unter Debian/Ubuntu: sudo apt-get install corkscrew
    • Unter macOS (mit Homebrew): brew install corkscrew
    • connect-proxy ist oft Teil von openssh oder separat erhältlich.
  2. Bearbeiten Sie ~/.ssh/config:
    Erstellen oder ändern Sie ~/.ssh/config wie folgt:

    ```ssh
    Host github.com
    ProxyCommand corkscrew proxy.example.com 8080 %h %p
    # Wenn der Proxy eine Authentifizierung erfordert:
    # ProxyCommand corkscrew proxy.example.com 8080 %h %p /path/to/proxy_auth_file

    Host gitlab.com
    ProxyCommand corkscrew proxy.example.com 8080 %h %p

    Oder für alle Hosts

    Host *
    ProxyCommand corkscrew proxy.example.com 8080 %h %p
    `` Ersetzen Sieproxy.example.comund8080durch die Adresse und den Port Ihres Proxys. Die Datei/path/to/proxy_auth_filesollteusername:passwordin einer einzigen Zeile enthalten. Stellen Sie sicher, dass diese Datei restriktive Berechtigungen hat (z.B.chmod 600`).

SOCKS-Proxy-Tunneling

Wenn Ihr Proxy ein SOCKS-Proxy ist, verwenden Sie netcat (nc) mit der Option -X:

  1. Stellen Sie sicher, dass netcat installiert ist. Es ist normalerweise auf den meisten Unix-ähnlichen Systemen vorinstalliert.

  2. Bearbeiten Sie ~/.ssh/config:

    ```ssh
    Host github.com
    ProxyCommand nc -X 5 -x proxy.example.com:1080 %h %p

    Host gitlab.com
    ProxyCommand nc -X 5 -x proxy.example.com:1080 %h %p

    Oder für alle Hosts

    Host *
    ProxyCommand nc -X 5 -x proxy.example.com:1080 %h %p
    `` Ersetzen Sieproxy.example.comund1080durch die Adresse und den Port Ihres SOCKS-Proxys. *-X 5: Spezifiziert SOCKS-Version 5. Verwenden Sie-X 4für SOCKS-Version 4. *-x`: Spezifiziert die Proxy-Adresse und den Port.

Authentifizierung für SOCKS-Proxy

Einige netcat-Versionen (nc von OpenBSD, oft Standard unter Linux) unterstützen die SOCKS-Proxy-Authentifizierung. Zum Beispiel:

Host *
    ProxyCommand nc -X 5 -x user:password@proxy.example.com:1080 %h %p

Konsultieren Sie die Manpage Ihrer netcat-Version für spezifische Authentifizierungssyntax und -funktionen.

Proxy-Einrichtung überprüfen

Nach der Konfiguration des Proxys überprüfen Sie, ob die Git-Operationen korrekt geleitet werden.

Für HTTP/HTTPS Git-Operationen

Überprüfen Sie Ihre Git-Konfiguration:

git config --global --get http.proxy
git config --global --get https.proxy
git config --global --get http.noProxy

Führen Sie einen git clone- oder git fetch-Vorgang für ein HTTPS-Repository aus:

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

Wenn der Proxy funktioniert, sollte die Verbindung erfolgreich sein. Netzwerküberwachungstools können die Datenverkehrsleitung bestätigen.

Für SSH Git-Operationen

Testen Sie Ihre SSH-Verbindung ausführlich:

ssh -vT git@github.com

Suchen Sie nach einer Ausgabe, die die Ausführung von ProxyCommand anzeigt. Zum Beispiel:

debug1: Executing proxy command: exec corkscrew proxy.example.com 8080 github.com 22

Versuchen Sie dann eine Git-Operation:

git clone git@github.com:git/git.git

Häufige Probleme beheben

  • Falsche Proxy-Adresse oder Port: Überprüfen Sie nochmals die IP-Adresse oder den Hostnamen des Proxyservers und den vorgesehenen Port.
  • Authentifizierungsfehler: Überprüfen Sie Benutzername und Passwort des Proxys. Stellen Sie für git config sicher, dass die Anmeldeinformationen korrekt sind oder ein Anmeldeinformationshelfer konfiguriert ist. Stellen Sie für ProxyCommand sicher, dass die Authentifizierungsdatei oder die eingebetteten Anmeldeinformationen korrekt sind.
  • SSL-Zertifikatsprobleme (https://): Wenn Sie Fehler wie SSL certificate problem: self signed certificate in certificate chain erhalten, führt Ihr Unternehmensproxy möglicherweise eine SSL-Inspektion durch. Konfigurieren Sie http.sslCAInfo mit Ihrem Unternehmens-Root-CA-Zertifikat, oder setzen Sie, als letzten Ausweg, temporär http.sslVerify false zum Debuggen (nicht empfohlen für die Produktion).
  • Firewall-Blockaden: Stellen Sie sicher, dass Ihre lokale Firewall (falls vorhanden) und die Unternehmensfirewall ausgehende Verbindungen zum Proxyserver auf dem angegebenen Port zulassen. Der Proxyserver selbst muss auch Verbindungen zu Git-Hosting-Diensten zulassen.
  • ProxyCommand-Helfer nicht gefunden (ssh://): Wenn ProxyCommand mit "command not found" fehlschlägt, stellen Sie sicher, dass netcat, corkscrew oder connect-proxy installiert ist und sein ausführbarer Pfad in der PATH-Umgebungsvariablen Ihres Systems enthalten ist. Geben Sie bei Bedarf den vollständigen Pfad zur ausführbaren Datei an (z.B. ProxyCommand /usr/bin/corkscrew ...).
  • Proxy umgangen: Wenn git config http.noProxy zu breit ist oder wenn Umgebungsvariablen falsch gesetzt sind, versucht Git möglicherweise eine direkte Verbindung. Überprüfen Sie die noProxy-Einstellungen.
  • Proxy-Timeout: Lang laufende Operationen können ein Timeout verursachen, wenn der Proxy aggressive Timeout-Einstellungen hat. Dies ist normalerweise ein serverseitiges Konfigurationsproblem.
Aktualisiert: 04.03.2026
Zurück zur Kategorie

Testen Sie unsere Proxys

20.000+ Proxys in über 100 Ländern weltweit

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.