Kontext
Ich versuche, meinen Arbeitsablauf zu verbessern.
Derzeit habe ich einen Desktop (der im Grunde eine GPU hat) und ein Notebook. Ich möchte den Desktop auch dann nutzen, wenn ich remote mit dem Notebook arbeite (auf beiden läuft Linux).
An meiner Universität ist nur der Port 80 für externe Verbindungen geöffnet.
Aktuelle Lösung
Mein Desktop verfügt über einen SSH-Server und ich führe in meinem NAT einige Portweiterleitungen durch, wanaddr:80 -> localaddr:22
um die Einschränkung im Universitätsnetzwerk zu umgehen.
Darüber hinaus stelle ich den Code bereit und führe ihn mit einem Remote-Interpreter unter Verwendung von IntelliJ IDEs aus. Es funktioniert einwandfrei.
Problem
Ich muss mehrere Dienste remote nutzen, z. B. tensorboard
, MLFlow
, jupyter
. Die Schwierigkeiten entstehen, da ich auf der WAN-Seite Port 80 verwenden muss und daher nicht einfach andere Ports weiterleiten kann.
Lösungsversuch
Angenommen, der Domänenname meines Desktops ist desktop.dev
.
Ich versuche, bestimmte Unteradressen auf die richtigen Dienste umzuleiten, z. B.
ssh.desktop.dev:80 -> <?> -> localhost:22
tensorboard.desktop.dev:80 -> <?> -> localhost:8888
jupyter.desktop.dev:80 -> <?> -> localhost:8000
Ich habe versucht, Caddy zu verwenden, habe aber später verstanden, dass es nur HTTP-Anfragen unterstützt. Ich schaue mir Traefik an, verstehe aber nicht, wie das ganz einfach geht.
Können Sie mir den richtigen Weg weisen?
Antwort1
Verwenden Sie die SSH-Portweiterleitung (Option -L). Stellen Sie auf Ihrem Heimcomputer nur SSH zur Verfügung. Es ist egal, mit welchem Port Sie sich letztendlich verbinden; 80 ist akzeptabel. Führen Sie auf Ihrem Heimcomputer Dienste auf dem Loopback-Gerät aus oder machen Sie sie zumindest über Loopback verfügbar.
Stellen Sie dann von Ihrer Roaming-Station aus eine Verbindung dorthin her, und zwar wie folgt: ssh -p home-port home.address -L 8888:localhost:8888 -L 8000:localhost:8000 usw.
(Wenn Sie Windows verwenden, kann Putty dies tun)
Stellen Sie dann auf Ihrer Roaming-Station eine Verbindung zu localhost her. Der SSH-Client tunnelt den Datenverkehr zu den genannten Ports auf Ihrem Heimcomputer. Wenn Sie auf einer Roaming-Station eine TCP-Verbindung zu localhost:8888 herstellen, akzeptiert der SSH-Client dies, stellt dann eine Verbindung zu localhost:8888 auf dem Heimcomputer her und sendet dann Pakete per Proxy hin und her, sodass Ihr Heimdienst auf Ihrer Roaming-Station so aussieht, als ob er dort wäre.
Sie können auch eine Rückwärts-Weiterleitung mit der Option -R durchführen. Sie können auf etwas zugreifen, das von Ihrer Roaming-Station aus nicht direkt erreichbar ist, wenn Ihr Weiterleitungsziel nicht localhost, sondern irgendein anderes von zu Hause aus erreichbares Ziel ist: -L 7777:some.irc.server:6666, und die Verbindung zu localhost:7777 ist so, als ob Sie mit some.irc.server:6666 verbunden wären.
Egal was Sie tun, über die Leitung wird nur der SSH-Verkehr zwischen Ihrem Zuhause und der Roaming-Station sichtbar sein.