SSH Tunneling Erklärung

8

Ich habe eine Frage zum SSH-Tunneling. Ich habe diesen Artikel gelesen

Ich möchte, dass die X-Weiterleitung funktioniert und einige X-Anwendungen zu Hause ausgeführt und auf einem Remote-System angezeigt werden:

 ssh -X -R 5555:localhost:22 [email protected] -N

Auf der Fernbedienung:

 ssh -X -p 5555 [email protected]

Dann nach Hause:

 //configure sshd to listen on 5555
 ssh [email protected]
 //here run some app

Sollte es funktionieren?

wawa235
quelle
Bitte versuchen Sie es, anstatt zu fragen, ob es funktionieren würde.
Wutaz
Ja, es ist immer am besten, Dinge auszuprobieren, und wenn es nicht funktioniert, fragen Sie warum.
slm
klingt wie Sie es rückwärts machen .. das "normale" ist, in der Fernbedienung zu laufen und es lokal anzuzeigen. Wenn Sie auf der Fernanzeige anzeigen möchten, teilen Sie uns Ihr Netzwerk mit. Dies ist möglicherweise einfach und benötigt nicht einmal ssh.
Skaperen

Antworten:

9

Ich habe einige Skizzen gezeichnet

Die Maschine, auf der der Befehl ssh tunnel eingegeben wird, heißt »Ihr Host« .

SSH-Tunnel ausgehend von lokalen


SSH-Tunnel von Remote

Einführung

  1. lokal: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostbedeutet: Verbindung mit ssh herstellen connectToHostund alle Verbindungsversuche an den lokalen sourcePort Port onPortdes angerufenen Computers weiterleiten forwardToHost, der vom connectToHostComputer aus erreichbar ist.

  2. Fernbedienung: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostbedeutet: Verbinden Sie sich mit ssh mit connectToHostund leiten Sie alle Verbindungsversuche an den Remote- sourcePort Port onPortdes angerufenen Computers weiter forwardToHost, der von Ihrem lokalen Computer aus erreichbar ist.

Dein Beispiel

Wenn Sie nur möchten, dass die X-Weiterleitung funktioniert, dh einige X-Anwendungen auf dem Computer zu Hause ausführen und auf einem Remote-System anzeigen lassen (nennen wir es Arbeitscomputer, weil es sich möglicherweise an Ihrem Arbeitsplatz befindet), dann sind Sie möglicherweise brauche überhaupt keinen SSH-Tunnel.

Starten Sie X-Anwendungen ohne Tunnel

Können Sie einfach vom Arbeitscomputer auf Ihren Heimcomputer ssh? Wenn dies der Fall ist , wenn Sie auf dem Arbeitscomputer sitzen und eine X-Anwendung starten möchten, die auf Ihrem Heimcomputer ausgeführt wird, aber auf Ihrem Arbeitscomputer angezeigt wird , müssen Sie Folgendes eingeben (auf dem Arbeitscomputer):

ssh -X homeuser @ homecomputer Firefox

Dadurch wird Firefox auf Ihrem Heimcomputer gestartet und auf dem Computer angezeigt, auf dem Sie diesen Befehl eingegeben haben, z. B. auf Ihrem Arbeitscomputer.

Versteckter Computer braucht Tunnel

Dies ist Bild Nummer 3 meiner Skizzen. Oft ist der Heimcomputer nicht direkt über das Internet erreichbar, da er sich hinter einer Firewall befindet oder über NAT (vor einem Router) verborgen ist . Dann können Sie einen Tunnel benutzen.

An Ihrem blauen Heimcomputer ( yourhost) geben Sie Folgendes ein:

ssh -R 5555:localhost:22 remoteuser@remotehost

Wo 5555ist der grüne Port und 22ist der rosa Port im Bild.

Wenn Sie jetzt bei der Arbeit sind remotehostund eine Verbindung zum grünen Port herstellen 5555, wird Ihre Verbindung getunnelt / an den rosa Port Ihres Heimcomputers localhost(dh Ihres blauen Heimcomputers selbst) weitergeleitet. Jetzt müssen Sie auf Ihrem Arbeitscomputer Folgendes eingeben:

ssh -X -p 5555 homeuser@localhost firefox

Dadurch wird Firefox auf Ihrem Heimcomputer ( yourhost) gestartet und auf dem Computer angezeigt, auf dem Sie diesen Befehl eingegeben haben, z. B. auf Ihrem Arbeitscomputer ( remotehost).

erik
quelle
1

Sie müssen die Remote-Anzeige angeben, die Sie weiterleiten möchten. Auf der Fernbedienung:

DISPLAY=:0 ssh -X -p 5555 user@localhost # not sure why you used 192.168.1.2

:0Anzeige weiterleiten .

Führen Sie dann in dieser Shell (die jetzt auf Ihrem Heimcomputer ausgeführt wird) Folgendes aus:

echo "$DISPLAY"

um herauszufinden, was die weitergeleitete Anzeige ist. Das ist ungefähr so localhost:10, was bedeutet, dass Sie eine TCP-Verbindung an Port 6010 herstellen müssen, um eine Verbindung zum Display :0auf dem Remote-Computer herzustellen ( :0dh, um eine Verbindung zu einem Unix-Domain-Socket in einer Art herzustellen /tmp/.X11-unix).

Damit eine Anwendung auf Ihrem Computer auf dem Display des Remote-Servers angezeigt wird, müssen Sie sie lediglich anweisen, Folgendes zu verwenden localhost:10:

DISPLAY=localhost:10 xlogo

zum Beispiel.

Beachten Sie, dass dies ein Tunnel über einem Tunnel ist.

Stéphane Chazelas
quelle