我的本地机器是 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'