Ich habe folgende Situation: Es gibt einige Hosts, die nur über einen SSH-Tunnel erreichbar sind. Nehmen wir an, es ist
Ich kann den SSH-Tunnel aufbauen und die für die Verbindung benötigten 443 Ports an lokale Ports binden:
ssh -L 1443:example.com:443 -L 2443:other.com:443 -A -l username myproxy.com
Das funktioniert bisher gut - wenn ich anrufe https://localhost:1443
, kann ich example.com öffnen, wenn ich anrufe https://localhost:2443
, kann ich other.com aufrufen
Das Problem: Es gibt einige Apps, die sich dessen nicht bewusst sind und trotzdem versuchen, eine Verbindung über den regulären Hostnamen und Port herzustellen.
Indem ich meiner hosts
Datei die folgenden Zeilen hinzufüge, komme ich der endgültigen Lösung einen Schritt näher:
127.0.0.1 example.com
127.0.0.1 other.com
https://example.com:1443
Dadurch kann ich in meinem Browser anrufen https://other.com:2443
– aber der Port ist immer noch ein Problem. Ich müsste BEIDE Domänen meinem lokalen Port zuordnen, 443
damit es für andere Anwendungen funktioniert.
Ich schätze, ich brauche einen lokalen Proxyserver, der den Port überwacht 443
und den Datenverkehr basierend auf dem Hostnamen entweder an 1443
oder weiterleitet 2443
, aber da bin ich ratlos.
Was kann ich tun, um allen Apps auf meinem Computer zu ermöglichen, nur den Hostnamen/Port zu verwenden, den Datenverkehr aber über meinen SSH-Tunnel laufen zu lassen?
Antwort1
Verwenden Sie ssh -D
. Dadurch wird ein SOCKS 5-Proxyserver auf dem angegebenen Port (normalerweise 1080 oder 9050) erstellt, den Sie im Browser konfigurieren und aufrufen können.allesdurch den SSH-Tunnel.
Dies funktioniert identisch mit OpenSSH, PuTTY (plink), Bitvise Tunnelier und ist nicht von Funktionen auf Betriebssystemebene abhängig.
Wenn Sie Firefox beispielsweise ssh -D 9050
ausführen, können Sie ihn folgendermaßen konfigurieren:
(Chrome benötigt möglicherweise eineBefehlszeilenoptionstattdessen.)