SSH X11 Weiterleitungsproblem

2717
user1863

Ich habe ForwardX11meine eingegeben ~/.ssh/configund starte dann eine X11-Anwendung wie folgt:

ssh -f user@host 'someapp; sleep 1' 

Das funktioniert gut.

Die Anwendung someappverfügt über eine Schaltfläche, mit der eine Viewer-Anwendung über ein Shell-Skript geöffnet wird viewer.sh. Wenn ich die Taste drücke, erscheint der Betrachter.

Das ist alles gut und wie erwartet, aber wenn ich das tue

ssh -2 -f user@host 'someapp; sleep 1' 

Es gibt Ärger. someappstartet sehr gut, aber wenn ich auf die Schaltfläche klicke, wird der Viewer nicht angezeigt.

Da der Betrachter über ein Shell-Skript aufgerufen wird, habe ich den Anruf mit ersetzt xclockund die Situation war genau dieselbe - ich denke, der Betrachter ist nicht schuld. Die Situation ist unter Linux und AIX gleich.

Der Grund, den ich brauche, -2ist, dass ich endlich das Verbindungsmultiplexing verwenden möchte und dies funktioniert nur mit Version 2. Der Grund dafür sleep 1ist, dass es sonst nicht funktioniert hat ;-)

Um weitere Verwirrung hinzuzufügen, mit

ssh -2 -f user@host 'xterm &; app; sleep 1' 

Der Betrachter arbeitet solange der Xterm geöffnet ist. Wenn ich xterm schließe, wird ssh -vfolgendes ausgegeben

debug1: channel 1: FORCE input drain debug1: channel 0: free: client-session, nchannels 3 debug1: channel 1: free: x11, nchannels 2 

und ab diesem Moment wird der Betrachter nicht mehr angezeigt, wenn ich die Taste drücke.

Ich habe die Viewer-Anwendung auch durch ein Skript ersetzt, das die $DISPLAYVariable in eine Datei schreibt . Die Variable ist immer korrekt gesetzt.

3
"Der Grund, warum ich -2 brauche" - Ich hoffe, Sie sagen nicht, dass Sie SSH1 verwenden würden, sonst ... grawity vor 14 Jahren 0
@grawity: Oh mein Gott, die Leute benutzen immer noch FTP, wo ich herkomme ... frag nicht ... user1863 vor 14 Jahren 0
@bbuser: FTP ist nicht so schlecht - breit unterstützt, zuverlässig, unterstützt SSL / TLS und so weiter. Und SSH1 gilt fast überall als veraltet. (Aber darüber werde ich jetzt nicht streiten.) grawity vor 14 Jahren 0
@grawity: Ich stimme dir zu, ich dachte nur, du hättest Sicherheitsprobleme in ssh1 angedeutet. user1863 vor 14 Jahren 0

3 Antworten auf die Frage

2
Doug Harris

Hast du es ForwardX11Trustedstatt versucht ForwardX11? ForwardX11Trustedist eine neuere Option, die "vertrauenswürdige" Verbindungen ermöglicht. Dies bedeutet, dass Ihr lokaler X-Server die Remote-Verbindung mehr erledigen lässt.

In diesem Artikel wird ausführlicher beschrieben, was vor sich geht und was Sie möglicherweise tun würden, wenn Sie dies stattdessen verwenden ForwardX11.

Ich habe * ForwardX11Trusted ja * zusätzlich (nicht stattdessen) von ForwardX11 probiert. Das verstehe ich aus dem (sehr interessanten) Artikel, auf den Sie verlinkt haben. Leider hat sich daran nichts geändert. user1863 vor 14 Jahren 0
2
Nakedible

Die SSH-Verbindung, die Sie initiieren, bleibt nur so lange in Betrieb wie:

  1. Die von Ihnen angegebenen Befehle werden ausgeführt.
  2. Es gibt aktive X11-Verbindungen.

Wenn Sie "someapp; sleep 1" angeben, bedeutet dies in Ihrem Fall, dass nach "someapp" ein Zeitfenster von 1 Sekunde angezeigt wird, in dem eine neue X11-Verbindung hergestellt werden muss, bevor die Verbindung beendet wird.

SSH kann nicht selbst wissen, wann es beendet werden soll, ob someapp im Hintergrund eine andere Anwendung startet, die sich später mit dem X-Display verbindet. Daher müssen Sie etwas herausfinden, um diese Informationen zu erhalten. Wie ein Wrapper-Skript, das erst beendet wird, wenn das vom Launcher erzeugte Programm beendet wird.

Oder sag einfach "sleep 1day" und sei glücklich.

Danke Nakedible, das macht viel Sinn und noch besser: Es funktioniert :-) user1863 vor 14 Jahren 0
0
Steffen

Sie müssen AllowX11Forwarding auch serverseitig aktivieren. Es kann sein, dass dies für SSH1 nicht benötigt wird / wird.

Details finden Sie hier

X11-Weiterleitung ist serverseitig erlaubt, sonst würde ich überhaupt kein X11-Fenster auf dem Client bekommen. Das Problem ist der untergeordnete Prozess, der von der Anwendung erzeugt wird. user1863 vor 14 Jahren 0