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

-1 remote-access ssh gnome

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

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

$ ssh -Y centos-host
Run Code Online (Sandbox Code Playgroud)

然后在打开的会话中我可以运行 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      -  
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行时

$ ssh -Y centos-host gnome-terminal
Run Code Online (Sandbox Code Playgroud)

带有 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      -
Run Code Online (Sandbox Code Playgroud)

我有另一台 linux mint 远程机器,但没有遇到过这样的问题。所以,我认为centos 7有问题。

请帮忙。
谢谢你。

小智 7

原因是它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'