在服务器上的 X11 上运行应用程序而不转发

在服务器上的 X11 上运行应用程序而不转发

问题

我正在使用一个计算密集型应用程序需要X11 运行。我想在远程服务器上运行它(显然正在运行 X11)。

我不需要转发X11,我只需要它在服务器上运行。

更多细节

如果我从服务器运行应用程序(即我使用物理连接到计算机的键盘),那么一切正常。我的问题是我想远程启动此应用程序(通过 SSH 连接),因为我无法始终物理访问服务器。

我不完全确定它是如何工作的,但是当我运行以下命令时从机器(即使用其键盘):

$ xhost +

然后我就可以$ DISPLAY=:0 ./run-my-app通过 SSH 毫无问题地运行我的应用程序 ( )。现在,我无法xhost +通过 SSH 运行,无论如何,从安全性角度来看,这听起来是一个坏主意。

如果我不运行xhost +,我会得到以下输出:

未指定协议

xauth: (argv):1: 无法打开显示“:0”。

总之,看起来有一些安全功能(访问控制)阻止我在 X11 上远程运行该应用程序。但重点是,我不想发生比从服务器启动应用程序(键盘连接到物理机)时发生的情况更多的事情;我只想远程启动/停止它,而不进行任何转发。

有没有办法做到这一点?

类似问题

它看起来类似于服务器上的 X11 不转发如何在 Linux 上无头运行 Firefox(即不需要 libgtk-x11-2.0.so.0)?,但在这些情况下他们可以使用虚拟服务器,例如Xvfb,这对我来说不起作用。而且,我的服务器上确实运行着一个 X 服务器,而且我确实需要它。

答案1

窃取正在运行的会话环境的副本

pid="`pgrep process_name\$ -U $USER`"
env `tr '\0' ' ' < "/proc/$pid/environ"` program_name

合适的值process_name:您知道在您的 X11 环境中运行的东西

相关内容