Mit SSH einen lokalen SOCKS-Proxy erstellen
Nutzen Sie dynamische OpenSSH-Weiterleitung auf 127.0.0.1, halten Sie den Prozess während der Sitzung am Leben und unterscheiden Sie Listener und Zielerreichbarkeit.
Mit autorisiertem SSH-Zugriff auf einen Server kann OpenSSH einen SOCKS-Listener auf Ihrem Rechner erstellen. Die SSH-Verbindung transportiert den weitergeleiteten Verkehr; der entfernte Server stellt die Zielverbindung her.
Ein Listener nur auf Loopback
ssh -N -T -o ControlPath=none -o ForkAfterAuthentication=no -o ExitOnForwardFailure=yes -D 127.0.0.1:1080 [email protected]
Ersetzen Sie Konto und Hostnamen. Der SSH-Server muss Weiterleitung erlauben; sein Administrator kann Weiterleitung und Ziele unabhängig von der Kontoanmeldung einschränken.
-D erstellt dynamische Weiterleitung, und die explizite Loopback-Adresse begrenzt den Listener auf diesen Rechner. -N lässt einen entfernten Befehl weg; -T ein Pseudoterminal. ControlPath=none vermeidet einen vorhandenen Sharing-Master, während ForkAfterAuthentication=no diesen Aufruf im Vordergrund hält.
Lassen Sie den Prozess während der Proxynutzung laufen. Ist Port 1080 belegt, wählen Sie einen anderen freien hohen Port und passen den Client an. ExitOnForwardFailure=yes beendet SSH, falls der Listener nicht erstellt werden kann.
Den SOCKS-Endpunkt verwenden
curl --proxy socks5h://127.0.0.1:1080 --noproxy '' --connect-timeout 5 --max-time 15 https://example.com/
Diese Anfrage delegiert die Behandlung des Zielnamens über SOCKS5. Andere Anwendungen brauchen eigene SOCKS-Konfigurationen; ein HTTP-Proxyfeld kann mit diesem Listener kein SOCKS sprechen.
So prüfen Sie, welchem Prozess der Port gehört:
ss -ltnp 'sport = :1080'
Der vorgesehene SSH-Prozess sollte einen Loopback-Listener besitzen. Eine Anfrage darüber prüft, ob auch der entfernte Server das Ziel erreichen kann. Nutzen Sie ein kontrolliertes Ziel, wenn Sie den beobachteten Ausgang prüfen müssen.
Lebensdauer der Sitzung
Ctrl-C schließt SSH-Prozess, Listener und weitergeleitete Verbindungen. Auch ein Abbruch der SSH-Verbindung macht den Proxy unbenutzbar.
ExitOnForwardFailure prüft den Aufbau. Es beendet SSH nicht bei jedem späteren Fehler einer Zielverbindung; untersuchen Sie Sitzung, lokalen Port und Zielanfrage daher getrennt.