如何在远程 centos 7 机器上运行 gnome-terminal?

如何在远程 centos 7 机器上运行 gnome-terminal?

我的本地机器是 linux mint,远程机器是 centos 7。我尝试使用 x-forwarding 在远程机器上打开 gnome-terminal,但它不起作用。

当我以交互模式连接到主机时

$ ssh -Y centos-host

然后在打开的会话中我可以运行 gnome-terminal 和 x-forwarding

$ 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      -  

然而当我尝试跑步时

$ ssh -Y centos-host gnome-terminal

带有 gnome 终端的窗口打开了,但是没有创建 X 的隧道。

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      -

我有另一台 Linux Mint 远程机器,没有遇到过这样的问题。所以,我认为 Centos 7 出了问题。

请帮忙。
谢谢。

答案1

原因是它gnome-terminal会将自身分叉到后台。如果您在交互式ssh会话中运行它,您会注意到即使终端仍处于打开状态,您也会收到一个新的命令提示符。在非交互式情况下,一旦发生这种情况,ssh就会认为命令已终止并关闭会话,包括关闭服务器上正在监听的 X11 套接字。由于仍有活动的 X11 连接,因此ssh不会立即退出,这就是为什么它看起来好像会话仍然处于活动状态,但是无法打开新的 X11 连接。

以前,您可以使用 来执行此操作,但不幸的是,此功能已在某个时候gnome-terminal --disable-factory被删除。现在您有两个选择:gnome-terminal

  • 例如,使用另一个不会进入后台的终端程序xterm
  • 启动后立即gnome-terminal在同一ssh会话中运行一个不会终止的命令,例如ssh -Y server 'gnome-terminal; echo Press enter to exit; read'

答案2

配置:

  • CentOS Linux 版本 7.6.1810(核心)
  • /etc/ssh/sshd_config包含:
X11Forwarding yes

以下命令对我有用:

ssh -Y HOST bash -l -c gnome-terminal --display=${DISPLAY} < /dev/null > /dev/null  2>&1 &

gnome-terminal --disable-factory告知的我--disable-factory不再得到支持。

相关内容