如何从 ssh shell 运行 GUI 应用程序?

kar*_*mba 7 ssh vnc xorg

我可以通过 ssh 和 vnc 访问我的 linux box。我想运行一个 GUI 应用程序,但直接从 ssh,我不想通过 VNC 访问并单击。所以,在使用 ssh 登录后,我想发出一个魔法命令,这样当我通过 VNC 登录时,我会看到我的 GUI 应用程序正在运行。我怎样才能做到这一点?

编辑:

linux 机器上运行着 X 服务器。我需要自动重启 GUI 应用程序。我想在没有任何 GUI 交互的情况下做到这一点。我需要的:

  1. 在 SERVER 上通过 ssh 登录
  2. 通过强制它绑定到在 SERVER 上运行的 X 服务器来运行我的 GUI 应用程序
  3. ???
  4. 利润!

小智 6

我已经阅读了问题的编辑版本,如果我理解正确,您想从 SSH 运行程序而不向您显示 GUI ……您只想运行该程序,它依赖于 X Windows,所以您需要它以某种方式连接到服务器本身上的 X Windows。

您需要做两件事。您需要允许来自 X Windows 外部的连接,然后您需要告诉 shell(在 SSH 中)要绑定到哪个 X 服务器。

首先,允许到 X 服务器的传入连接。在服务器计算机上的 X Windows 中打开一个终端窗口。(您必须有权访问它,否则您无法执行此操作。)

发出以下命令:

xhost +
Run Code Online (Sandbox Code Playgroud)

它应该告诉您“允许来自所有主机的连接”或类似的信息。

然后,在仍保留在 X Windows 中的同时,发出:

echo $DISPLAY
Run Code Online (Sandbox Code Playgroud)

这将告诉您显示 ID。写下来或记住它。通常它会是 ":0" 或 ":0.0",但不要担心它是否不同。

这就是您在 X Windows 本身中需要做的所有事情。

现在从你想要的任何地方通过 SSH 连接到服务器。发出命令:

export DISPLAY=[what-the-echo-command-gave-you]
Run Code Online (Sandbox Code Playgroud)

应该就是这样!现在您应该能够从那个 SSH shell 运行任何 X 窗口,它会在本地 X Windows 服务器上弹出。

希望能帮助到你!

  • `xhost +` 是一个非常糟糕的主意。如果您的用户启动了 Xserver,那么您应该已经拥有适当的 Xauthority 文件,无需与服务器主机 acls 混淆。 (4认同)

mip*_*adi 5

您必须将 X11 转发到本地机器(从远程机器)。调用 ssh 时传递-X-Y标志。