Zum Inhalt springen
GProxy
Registrierung
Гайды 7 Min. Lesezeit 34 Aufrufe

SSH-Tunnel als Proxy

Erfahren Sie, wie Sie SSH-Tunnel für einen sicheren SOCKS-Proxy nutzen, Ihre Daten verschlüsseln und privates, uneingeschränktes

Безопасность
SSH-Tunnel als Proxy

Ein SSH-Tunnel kann als SOCKS-Proxy verwendet werden, indem die dynamische Portweiterleitungsfunktion des SSH-Clients genutzt wird. Dies ermöglicht es, den Datenverkehr von einem lokalen Port über den SSH-Server an beliebige Ziele im Netzwerk weiterzuleiten, die für den SSH-Server zugänglich sind.

SOCKS über SSH verstehen

SOCKS (Socket Secure) ist ein Internetprotokoll, das Netzwerkpakete zwischen einem Client und einem Server über einen Proxy-Server leitet. In Kombination mit der dynamischen Portweiterleitung von SSH erstellt der SSH-Client einen lokalen SOCKS-Proxy-Server. Jede Anwendung, die für die Verwendung dieses lokalen SOCKS-Proxys konfiguriert ist, lässt ihren Datenverkehr verschlüsseln und über die SSH-Verbindung zum entfernten SSH-Server leiten. Der SSH-Server fungiert dann als SOCKS-Proxy und stellt im Auftrag des Clients Verbindungen zum endgültigen Ziel her.

Dieser Mechanismus erweitert effektiv die Netzwerkreichweite des Clients auf die des SSH-Servers und verschlüsselt gleichzeitig alle Daten, die zwischen dem Client und dem SSH-Server übertragen werden.

Wie dynamische Portweiterleitung funktioniert

Die dynamische Portweiterleitung, die durch die Option -D in SSH angegeben wird, weist den SSH-Client an, Folgendes zu tun:
1. Auf einem angegebenen lokalen Port auf eingehende Verbindungen zu lauschen.
2. Wenn eine Verbindung auf diesem lokalen Port empfangen wird, fungiert der SSH-Client als SOCKS-Server.
3. Er verhandelt das SOCKS-Protokoll mit der Client-Anwendung (z. B. einem Webbrowser).
4. Basierend auf der SOCKS-Anfrage (die den Zielhost und -port enthält) leitet der SSH-Client diese Anfrage über den verschlüsselten SSH-Tunnel an den SSH-Server weiter.
5. Der SSH-Server initiiert dann eine Verbindung zum Zielhost und -port aus seinem eigenen Netzwerkkontext.
6. Alle nachfolgenden Daten, die zwischen der Client-Anwendung und dem Zielhost ausgetauscht werden, werden über den SSH-Tunnel weitergeleitet und zwischen dem Client und dem SSH-Server verschlüsselt.

Einrichten eines SSH SOCKS-Proxys

Um einen SSH SOCKS-Proxy einzurichten, wird ein SSH-Client verwendet, um eine Verbindung zu einem entfernten SSH-Server herzustellen. Der Server muss so konfiguriert sein, dass er TCP-Weiterleitung zulässt (was normalerweise standardmäßig über AllowTcpForwarding yes in sshd_config aktiviert ist).

Der grundlegende Befehl zum Einrichten einer dynamischen Portweiterleitung lautet:

ssh -D [LOKALER_PORT] [BENUTZER]@[SSH_SERVER_IP] -N -f

Erläuterung der Befehlsoptionen:

  • -D [LOKALER_PORT]: Gibt die dynamische Portweiterleitung an. Der SSH-Client lauscht auf dem LOKALEN_PORT auf dem lokalen Rechner. Dieser Port fungiert als SOCKS-Proxy. Gängige Wahlmöglichkeiten für LOKALER_PORT sind 1080, 8080, 9050 oder jeder unprivilegierte Port über 1024.
  • [BENUTZER]: Der Benutzername für die Authentifizierung auf dem entfernten SSH-Server.
  • [SSH_SERVER_IP]: Die IP-Adresse oder der Hostname des entfernten SSH-Servers.
  • -N: Verhindert die Ausführung entfernter Befehle. Diese Option wird verwendet, wenn nur Portweiterleitung gewünscht ist, ohne eine interaktive Shell.
  • -f: Sendet ssh vor der Befehlsausführung in den Hintergrund. Dies ermöglicht es dem SSH-Tunnel, als Hintergrundprozess zu laufen. Wenn weggelassen, bleibt die SSH-Verbindung im Vordergrund.
  • -q: Unterdrückt die meisten Warn- und Diagnosemeldungen.
  • -C: Fordert die Komprimierung aller Daten an (einschließlich stdin, stdout, stderr sowie weitergeleiteter X11- und TCP-Daten). Nützlich bei langsamen Verbindungen.

Beispiel-Einrichtung:

Um einen SOCKS-Proxy zu erstellen, der auf dem lokalen Port 8080 lauscht und sich mit user@example.com verbindet:

ssh -D 8080 user@example.com -N -f

Nach Ausführung dieses Befehls läuft der SSH-Client-Prozess im Hintergrund und lauscht auf localhost:8080.

Konfigurieren von Clients zur Verwendung des SOCKS-Proxys

Sobald der SSH SOCKS-Proxy aktiv ist, müssen Anwendungen so konfiguriert werden, dass sie ihren Datenverkehr über localhost:[LOKALER_PORT] leiten.

Webbrowser

Firefox:

  1. Öffnen Sie die Firefox-Einstellungen.
  2. Suchen Sie nach "Proxy" oder navigieren Sie zu "Netzwerk-Einstellungen" (normalerweise about:preferences#general -> Netzwerk-Einstellungen).
  3. Wählen Sie "Manuelle Proxy-Konfiguration".
  4. Geben Sie im Feld "SOCKS-Host" localhost und den PORT (z. B. 8080) ein.
  5. Wählen Sie "SOCKS v5".
  6. Stellen Sie sicher, dass "DNS über SOCKS v5" aktiviert ist, um DNS-Lecks zu verhindern.
  7. Klicken Sie auf OK.

Chrome/Chromium:

Chrome verfügt nicht über integrierte SOCKS-Proxy-Einstellungen. Es verlässt sich typischerweise auf System-Proxy-Einstellungen oder erfordert Befehlszeilen-Flags oder Erweiterungen.

Verwendung von Befehlszeilen-Flags (temporär):

google-chrome --proxy-server="socks5://localhost:8080" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost"

Das Flag --host-resolver-rules stellt sicher, dass DNS-Anfragen ebenfalls über den SOCKS5-Proxy geleitet werden, wodurch DNS-Lecks verhindert werden.

Verwendung von Proxy-Switcher-Erweiterungen:
Installieren Sie eine Browser-Erweiterung wie "Proxy SwitchyOmega" und konfigurieren Sie diese für die Verwendung eines SOCKS5-Proxys unter localhost:[LOKALER_PORT].

Systemweite Proxy-Einstellungen (macOS/Windows/Linux Desktop-Umgebungen)

Viele Betriebssysteme ermöglichen die Einrichtung eines systemweiten SOCKS-Proxys. Dies wirkt sich auf die meisten Anwendungen aus, die die System-Proxy-Einstellungen respektieren.

  • macOS: Systemeinstellungen -> Netzwerk -> Netzwerkdienst auswählen -> Details -> Proxies -> "SOCKS-Proxy" aktivieren -> localhost und PORT eingeben.
  • Windows: Einstellungen -> Netzwerk und Internet -> Proxy -> Manuelle Proxy-Einrichtung -> "Proxyserver verwenden" aktivieren -> "SOCKS-Proxy" auf localhost und PORT setzen.
  • Linux (GNOME/KDE): Typischerweise in den Netzwerk- oder Proxy-Einstellungen innerhalb der Systemeinstellungen zu finden, ähnlich wie bei macOS/Windows.

Befehlszeilen-Tools

curl:

curl --socks5-hostname localhost:8080 http://example.com

Die Verwendung von --socks5-hostname stellt sicher, dass die DNS-Auflösung ebenfalls über den SOCKS-Proxy-Server erfolgt, wodurch potenzielle DNS-Lecks verhindert werden.

git:

Konfigurieren Sie Git, um den SOCKS-Proxy für HTTPS/HTTP- oder SSH-Verbindungen zu verwenden.

Für HTTPS/HTTP:

git config --global http.proxy socks5://localhost:8080
git config --global https.proxy socks5://localhost:8080

Für SSH (wenn Git SSH zum Klonen/Pushen verwendet):
Bearbeiten Sie ~/.ssh/config:

Host github.com
    ProxyCommand nc -X 5 -x localhost:8080 %h %p

Dies weist SSH an, sich über den lokalen SOCKS5-Proxy mit github.com zu verbinden.

proxychains-ng:

Für Anwendungen, die SOCKS-Proxys nicht direkt unterstützen, kann proxychains-ng sie dazu zwingen, einen zu verwenden.
1. proxychains-ng installieren: Typischerweise über Paketmanager verfügbar (z. B. sudo apt install proxychains4).
2. Konfigurieren: Bearbeiten Sie /etc/proxychains.conf oder ~/.proxychains/proxychains.conf (falls erstellt) und fügen Sie hinzu:
socks5 127.0.0.1 8080
3. Anwendung ausführen:
bash proxychains4 [ihre_anwendung]

Anwendungsfälle

SSH SOCKS-Proxys bieten mehrere praktische Vorteile:

  • Umgehen von Netzwerkbeschränkungen: Zugriff auf Dienste oder Websites, die durch lokale Firewalls oder geografische Beschränkungen blockiert sind, indem der Datenverkehr über einen SSH-Server in einem uneingeschränkten Netzwerk geleitet wird.
  • Verschlüsseln von unverschlüsseltem Datenverkehr: Der gesamte Datenverkehr zwischen dem Client und dem SSH-Server ist verschlüsselt, wodurch Daten vor Abhören in lokalen Netzwerken, insbesondere in öffentlichen WLANs, geschützt werden.
  • Zugriff auf private Netzwerkressourcen: Wenn sich der SSH-Server in einem privaten Netzwerk (z. B. einem Unternehmens-LAN) befindet, kann der SOCKS-Proxy einen sicheren Zugriff auf Ressourcen in diesem Netzwerk von einem externen Standort aus ermöglichen.
  • Maskieren der Client-IP-Adresse: Für den Zielserver scheint die Verbindung von der IP-Adresse des SSH-Servers zu stammen, was dem Client eine Schicht Anonymität bietet.
  • Sichere Fernverwaltung: Zugriff auf entfernte Dienste (z. B. Datenbanken, Webserver) über einen verschlüsselten Tunnel, auch wenn die Dienste selbst keine Verschlüsselung unterstützen.

SSH-Tunnel vs. VPN

Obwohl sowohl SSH-Tunnel als auch VPNs (Virtual Private Networks) verschlüsselten Netzwerkzugriff bieten, unterscheiden sie sich in Umfang und Implementierung.

Merkmal SSH SOCKS-Proxy (Tunnel) VPN (z. B. OpenVPN, WireGuard)
Umfang Anwendungsspezifisch (SOCKS-fähige Apps) oder manuelle Konfiguration. Systemweiter Netzwerkverkehr.
Einrichtungskomplexität Relativ einfach (einzelner SSH-Befehl). Erfordert Server-Setup, Client-Konfiguration, Zertifikate.
Protokoll SOCKS über SSH (TCP). Verschiedene (OpenVPN: TCP/UDP, WireGuard: UDP).
Verschlüsselung Robuste SSH-Verschlüsselung. Verschlüsselung des VPN-Protokolls (z. B. AES-256).
Netzwerkschicht Anwendungsschicht (SOCKS) über Transportschicht (SSH). Netzwerkschicht (IP-Pakete gekapselt).
Datenverkehrstyp Primär TCP, SOCKS5 kann UDP proxen. Gesamter IP-Verkehr (TCP, UDP, ICMP).
DNS-Auflösung SOCKS5 kann DNS proxen; SOCKS4 nicht. Manuelle Konfiguration oft nötig. Proxed typischerweise alle DNS-Anfragen automatisch.
Overhead SSH-Protokoll-Overhead, TCP-über-TCP kann Leistung beeinträchtigen. VPN-Protokoll-Overhead, generell für Leistung optimiert.
Anwendungsfälle Umgehen spezifischer Blockaden, Proxy für einzelne Apps, temporärer Zugriff. Allgemeiner sicherer Browserzugriff, Fernzugriff auf Büros, vollständige Netzwerkanonymität.

Sicherheitsaspekte

Die Verwendung eines SSH SOCKS-Proxys bringt spezifische Sicherheitsaspekte mit sich:

  • Vertrauen in den SSH-Server: Der SSH-Server wird zu einem kritischen Punkt in der Vertrauenskette. Der gesamte Datenverkehr läuft über ihn, sodass der Serverbetreiber theoretisch unverschlüsselten Datenverkehr inspizieren kann, nachdem er den SSH-Tunnel verlassen hat, falls der Zieldienst kein TLS/SSL verwendet.
  • SSH-Server-Sicherheit: Der SSH-Server selbst muss sicher sein. Dazu gehören die Verwendung starker Authentifizierung (SSH-Schlüssel gegenüber Passwörtern bevorzugt), die Aktualisierung des SSH-Daemons und die Anwendung geeigneter Firewall-Regeln. Ein kompromittierter SSH-Server gefährdet die Sicherheit des Tunnels.
  • Exposition des lokalen Ports: Der lokale SOCKS-Proxy-Port (LOKALER_PORT) ist typischerweise an localhost (127.0.0.1) gebunden, was bedeutet, dass nur Anwendungen auf dem lokalen Rechner eine Verbindung herstellen können. Wenn 0.0.0.0 verwendet wird (z. B. ssh -D 0.0.0.0:8080 ...), wird der Proxy von anderen Rechnern im lokalen Netzwerk zugänglich, was ein Sicherheitsrisiko darstellen kann, wenn dies nicht beabsichtigt ist.
  • DNS-Leckage: Wenn der SOCKS-Proxy nicht korrekt konfiguriert ist (z. B. bei Verwendung von SOCKS4 oder wenn "DNS über Proxy" in Browsern nicht aktiviert ist), könnten DNS-Anfragen direkt an den Standard-DNS-Server gesendet werden, wodurch die Browseraktivität auch dann offengelegt wird, wenn der Anwendungsdatenverkehr getunnelt wird. SOCKS5 unterstützt die Remote-DNS-Auflösung; stellen Sie sicher, dass diese genutzt wird.

Leistungsaspekte

Leistungseinbußen bei Verwendung eines SSH SOCKS-Proxys:

  • Latenz: Jede Verbindung beinhaltet einen zusätzlichen Hop über den SSH-Server. Dies erhöht die Latenz, was bei latenzempfindlichen Anwendungen spürbar sein kann.
  • Bandbreite: Der maximale Durchsatz wird durch die Bandbreite der Verbindung des Clients zum SSH-Server und der Verbindung des SSH-Servers zum endgültigen Ziel begrenzt.
  • Verschlüsselungs-Overhead: SSH-Verschlüsselung und -Entschlüsselung verbrauchen CPU-Ressourcen sowohl auf dem Client als auch auf dem Server, was die effektive Bandbreite potenziell reduzieren kann.
  • TCP über TCP: Wenn TCP-Verkehr über eine bestehende TCP-basierte SSH-Verbindung getunnelt wird, kann dies aufgrund des Phänomens des "TCP-Meltdowns" zu einer Leistungsverschlechterung führen. Dies tritt auf, wenn Paketverluste auf der zugrunde liegenden TCP-Verbindung zu Neuübertragungen führen, die dann von der inneren TCP-Verbindung erneut übertragen werden, was zu exponentiellem Backoff und reduziertem Durchsatz führt. Die Verwendung von UDP-basierten Tunneln (wie WireGuard) oder SSH über UDP (sshovudp) kann dies mindern, ist aber für SOCKS über SSH nicht Standard.
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.