Frage Verwenden von X11-Weiterleitung mit SSH und VNC?


Ich arbeite an einem Remote-Cluster über ssh mit der Option -X, weil ich Daten und Grafiken über ein VPN-Protokoll visualisieren muss. Irgendwann aufgrund der Instabilität der Internetverbindung verliere ich meine Sitzung. Sie sagten mir, ich könnte vnc verwenden, um meine aktuelle Sitzung nicht zu verlieren, sodass ich, wenn die Internetverbindung unterbrochen wird, die Verbindung wiederherstellen und mit meiner zuvor geöffneten Sitzung fortfahren kann.

Ich logge mich in den Remote-Cluster "remote.cluster" ein und tippe ein

 vncserver :1

dann öffne ich ein anderes Terminal auf meinem System und ich tippe

 ssh -C -NL 5901:remote.cluster:5901 myusername@remote.cluster &

Dann starte ich vinagre auf meinem System und ich verbinde mit ssh-Protokoll. Das Problem ist, dass ich keine X11-Weiterleitung habe und ich Windows nicht öffnen kann. Wenn ich versuche, eine Verbindung über das vnc-Protokoll mit vinagre herzustellen, verbindet es sich nicht, weil ich etwas als Verbindungs-Timeout bekomme.

Was soll ich machen?


4
2017-11-21 10:56


Ursprung




Antworten:


Wenn wir uns über VNC mit einem entfernten X-Server verbinden, haben wir den Vorteil, dass die grafische Anwendung auch dann weiter läuft, wenn die SSH-Verbindung zur Fernbedienung unterbrochen ist. Wir können dann die Verbindung wiederherstellen, um die grafische Anwendung fortzusetzen. Siehe auch:

Um die Wiederverbindung zu beschleunigen, können wir die Verbindung zur Gegenstelle mit einer SSH-Sitzung kombinieren vncviewer von tightvncviewer  Install tightvncviewer mit der Option -via. Dadurch können wir auf dem Remote-Server laufen:

vncserver:0  ## or any other display number e.g. :1

eine Verbindung zum Viewer über einen SSH-Tunnel herstellen:

vncviewer -via user@remote localhost:0

Dies erfordert deutlich mehr Bandbreite, da der gesamte Desktop vom VNC-Server übertragen werden muss. Daher ist es möglicherweise nicht wirklich eine gute Idee für Verbindungen mit niedriger Bandbreite, aber es kann Ihnen eine etwas bessere Erfahrung auf hohen Bandbreiten aber instabilen Verbindungen im Vergleich zu X-Forwarding geben.


3
2017-11-21 11:54



was ich wirklich tun möchte, ist, in dem link, den du zur verfügung stellst, was michael_n im zweiten kommentar der ersten antwort sagt, aber es funktioniert nicht für mich, weil ich nicht in der lage bin, mich wieder mit dem bildschirm zu verbinden -r, vielleicht tue ich es etwas stimmt nicht - simona
Ich habe getan, was Sie sagen, und der VNC fragt nach einem Passwort, das ich nicht eingestellt habe, also sollte ich es an den remotehost Administrator fragen, richtig? Eine andere Sache: wenn ich vnc über ssh wie oben in Ihrer Antwort verwende, wird es langsam sein, weil alle Grafiken Zeichnung auf dem Remote-Rechner statt meiner lokalen ausgeführt werden? - simona
Vncviewer -via fragt 1) nach dem ssh-Passwort für die Fernbedienung und dann 2) nach dem vnc-Passwort, aber letzteres nur, falls es auf der Fernbedienung eingestellt wurde. Alle Zeichnungen werden auf dem entfernten Server erstellt und dann als komprimierte Grafik über den SSH-Tunnel gesendet (siehe auch) tightvnc.com/vncviewer.1.php) - Takkat
Danke für Ihre Lösung. Da es mir beim Lesen Ihrer Lösung nicht klar war, möchte ich zukünftigen Lesern zeigen, dass die einzigen notwendigen Befehle vncserver: 1 und vncviewer -via user remote localhost sind: 1. Übrigens ist die Grafikvisualisierung sehr schnell, ich bin überrascht, dass es tatsächlich auf dem Remote-Cluster und nicht auf meinem lokalen Rechner läuft - simona
@simona: Danke für das Zeigen. Hoffe mit dem Schnitt ist es jetzt klarer. - Takkat


Der Befehl verwendet:

ssh -C -NL 5901:localhost:5901 myusername@remote.cluster &

Ortsvorwahl 5901 -> remote.cluster: 5901

Sie können also eine Verbindung zu localhost :: 5901 herstellen, um eine Verbindung zu der VNC-Sitzung herzustellen, die auf remote.cluster ausgeführt wird (auf die Sie keinen direkten Zugriff haben).

Die X11-Weiterleitung unterscheidet sich von VNC. Sie müssen verwenden -X, beispielsweise

ssh -X myusername@remote.cluster

Dann können Sie Remote-GUI-Anwendungen auf Ihrem lokalen Computer ausführen. vorausgesetzt, Sie haben einen X Server, der lokal läuft (Ubuntu Desktop oder Xming unter Windows).

Aktualisieren:

Ich habe einen Fehler in der Weiterleitung gemacht, es sollte sein:

ssh -C -L 5901:localhost:5901 myusername@remote.cluster

Dann können Sie vnc zu localhost: 5901, Datenverkehr wird an remote.cluster weitergeleitet: 5901. Entschuldigung für die Sorglosigkeit ...

Wenn keine GUI erforderlich ist, sollten Sie sie verwenden tmux oder screen um den Verlust der Sitzung zu vermeiden.


1
2017-11-21 11:21



Ich benutze immer ssh -X und es funktioniert, der Punkt ist, dass ich das Ding auf eine Weise einrichten möchte, dass wenn meine Verbindung abbricht, ich mich wiederverbinden und meine vorherige Sitzung wieder finden kann. Also, sagst du, ich sollte VNC-Protokoll in Vinagre verwenden, um eine Verbindung mit dem Remote-Cluster herzustellen? es funktioniert nicht: Ich bekomme `Verbindung zum Host remote.host wurde geschlossen ' - simona
Ich habe die Antwort aktualisiert, ich habe keinen Fehler im Weiterleitungsbefehl bemerkt. - Terry Wang
Danke, ich brauche nicht wirklich GUI, nur um einige Plots zu visualisieren, kannst du mir einen Startpunkt für den Bildschirm oder tmux geben, ich weiß nichts über sie - simona
Ich persönlich bevorzuge tmux, Sie können Bildschirm oder byobu (Ubuntu erweiterten Bildschirm) verwenden, ähnlich. Beim Ausführen von tmux auf dem Remote-Server wird im Grunde ein Daemon / eine Sitzung auf dieser Box ausgeführt, sodass Sie nach Verbindungsabbau die Verbindung über SSH wieder herstellen und an diese Sitzung anhängen können - ohne dabei das zu verlieren, woran Sie im Terminal gearbeitet haben. Ein Beispiel für eine .tmux.conf gist.github.com/3950393 - Terry Wang