我的本地机器是 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
不再得到支持。