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

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

我可以通过 ssh 和 vnc 访问我的 Linux 机器。我想运行一个 GUI 应用程序,但直接从 ssh 运行,我不想通过 VNC 访问并点击。因此,在使用 ssh 登录后,我想发出一个神奇的命令,这样当我通过 VNC 登录时,我就会看到我的 GUI 应用程序正在运行。我该怎么做?

编辑:

Linux 机器上运行着 X 服务器。我需要自动重启 GUI 应用程序。我想在没有任何 GUI 交互的情况下完成此操作。我需要:

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

答案1

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

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

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

发出以下命令:

xhost +

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

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

echo $DISPLAY

这将告诉您显示 ID。写下来或记住它。通常它将是“:0”或“:0.0”,但如果不同也不必担心。

这就是您需要在 X Windows 内部完成的全部工作。

现在您可以从任何位置通过 SSH 进入服务器。发出以下命令:

export DISPLAY=[what-the-echo-command-gave-you]

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

希望能帮助到你!

答案2

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

答案3

应用程序出现在哪个显示器上由DISPLAY环境变量决定。执行此操作export DISPLAY=:0.0使其出现在远程机器的第一个显示器上。

答案4

仅供参考,您可以在 Windows 领域执行类似操作,例如启动 UNIX 进程,方法是使用温控硬盘 和/或隧道工

如果你的意思是启动本地 X windows 会话中的 gui,那么你需要将 DISPLAY 变量设置为本地(Tunnelier 可能有这样的设置),因为你在 Windows 上,所以你需要将它与在 windows 上运行 x-window 模拟器结合起来(例如cygwin-X

相关内容