Mein lokaler Rechner ist Linux Mint und der Remote-Rechner CentOS 7. Ich versuche, das Gnome-Terminal auf dem Remote-Rechner mit X-Forwarding zu öffnen, aber es funktioniert nicht.
Wenn ich mich im interaktiven Modus mit dem Host verbinde
$ ssh -Y centos-host
Dann kann ich in der geöffneten Sitzung Gnome-Terminal und X-Forwarding ausführen.
$ gnome-terminal
$ netstat -nltp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN -
Aber wenn ich versuche zu rennen
$ ssh -Y centos-host gnome-terminal
Das Fenster mit dem Gnome-Terminal öffnete sich, aber es wurde kein Tunnel für X erstellt.
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
Ich habe eine andere Linux Mint-Remote-Maschine und hatte damit kein solches Problem. Ich denke also, dass mit CentOS 7 etwas nicht stimmt.
Bitte helfen Sie.
Danke.
Antwort1
Der Grund dafür ist, dass gnome-terminal
es sich selbst in den Hintergrund verzweigt. Wenn Sie es in Ihrer interaktiven ssh
Sitzung ausführen, werden Sie feststellen, dass Sie eine neue Eingabeaufforderung erhalten, obwohl das Terminal noch geöffnet ist. Im nicht-interaktiven Fall wird, sobald dies geschieht, ssh
denken, dass der Befehl beendet wurde und die Sitzung geschlossen wird, einschließlich des Schließens des lauschenden X11-Sockets auf dem Server. Da noch aktive X11-Verbindungen bestehen, ssh
wird es nicht sofort beendet, weshalb essieht ausals ob die Sitzung noch aktiv wäre, jedoch können keine neuen X11-Verbindungen geöffnet werden.
Früher war dies mit möglich gnome-terminal --disable-factory
, aber leider wurde dies gnome-terminal
irgendwann entfernt. Sie haben jetzt zwei Möglichkeiten:
- Verwenden Sie ein anderes Terminalprogramm, das nicht in den Hintergrund wechselt, beispielsweise
xterm
- Führen Sie direkt nach dem Start
gnome-terminal
in derselbenssh
Sitzung einen Befehl aus, der nicht beendet wird, beispielsweisessh -Y server 'gnome-terminal; echo Press enter to exit; read'
Antwort2
Aufbau:
- CentOS Linux Version 7.6.1810 (Core)
/etc/ssh/sshd_config
enthält:
X11Forwarding yes
Der folgende Befehl funktioniert bei mir:
ssh -Y HOST bash -l -c gnome-terminal --display=${DISPLAY} < /dev/null > /dev/null 2>&1 &
Der gnome-terminal --disable-factory
mir mitgeteilte Support --disable-factory
wird nicht mehr unterstützt.