使用 socat 远程访问 X

Using socat to access X remotely

我有一个远程服务器,我想在我已经设置的网络名称空间内启动一些 gui 应用程序。我正在使用 socat 转发 x 会话。

socat  exec:'ssh {REMOTE_HOST} rm -rf /tmp/.X11-unix/X1; socat -d -d -d -d unix-l\:/tmp/.X11-unix/X1111 -' unix:/tmp/.X11-unix/X0

但是,如果我尝试启动 eog

这样的应用程序
DISPLAY=:1111 eog

失败并显示以下消息:

I   No protocol specified
** (eog:9498): WARNING **: Could not open X display
Cannot open display:
Run 'eog --help' to see a full list of available command line options.

然后 socat 立即退出。

好吧,花了一天时间,但我想出了一个办法。

我最终使用 Xpra 在远程服务器上启动了一个 X 服务器,并在我的本地机器上附加了它。

在本地 运行 xhost + 并在远程服务器的 socat 调用中添加 fork 标志后,socat 方法也起作用了。但是,它从未始终如一地工作(应用程序在启动期间挂起的可能性与未挂起的可能性一样大)。而且它从未与像 firefox 这样的更复杂的应用程序一起工作。跟踪应用程序指向尝试使用 dbus 时挂起的应用程序。