在远程系统上显示 X 程序

use*_*029 2 remote x11 display

我有 Ubuntu 14.04 和 Fedora 20 作为测试环境。我正在尝试通过 SSH 会话将 X 程序从 Fedora 发送到 Ubuntu。我的设置如下:

在 Ubuntu 上运行:

Xhost +IP Address of Fedora
Run Code Online (Sandbox Code Playgroud)

这将返回:

10.10.24.153 being added to access control list
Run Code Online (Sandbox Code Playgroud)

然后从 Fedora 系统运行:

DISPLAY=10.10.25.168:0.0
Run Code Online (Sandbox Code Playgroud)

这一步将 Fedora 的 Display 重定向到 Ubuntu 系统。

然后我从 Ubuntu SSH 到 Fedora。此时,当我尝试从 ssh 提示符启动一个程序时,例如 gedit,我得到了这个:(并且没有出现 gedit 窗口)

Unable to init server: Could not connect: Connection refused (gedit:7358): Gtk-WARNING **: cannot open display:
Run Code Online (Sandbox Code Playgroud)

但是,当我直接从 Fedora 启动 gedit 时,它会出现在我的 Ubuntu 系统上,尽管在 Fedora 端出现错误:

** (gedit:7372): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-77RFAr0MHI: Connection refused
Run Code Online (Sandbox Code Playgroud)

我应该能够从 ssh 会话启动基于 X 的程序并且它出现在屏幕上。有谁知道我做错了什么?

roa*_*ima 5

如果你想在你的ssh会话中运行 X 应用程序,你只需要告诉ssh承载流量。不要运行xhost也不要覆盖DISPLAY.

ssh -Yf remote-host some-x-application
Run Code Online (Sandbox Code Playgroud)

-Y标志告诉ssh在 上创建一个DISPLAY环境变量,remote-host并通过加密连接传输生成的流量。该-f标志告诉ssh在后台执行所有这些操作,以便看起来会话已立即终止。

如果您希望在ssh连接的末端明显运行交互式 shell,您也可以执行以下操作:

ssh -Y remote-host
...log in as necessary...

some-x-application &
another-x-application &
...etc...

wait; exit
Run Code Online (Sandbox Code Playgroud)