我可以通过 ssh 和 vnc 访问我的 Linux 机器。我想运行一个 GUI 应用程序,但直接从 ssh 运行,我不想通过 VNC 访问并点击。因此,在使用 ssh 登录后,我想发出一个神奇的命令,这样当我通过 VNC 登录时,我就会看到我的 GUI 应用程序正在运行。我该怎么做?
编辑:
Linux 机器上运行着 X 服务器。我需要自动重启 GUI 应用程序。我想在没有任何 GUI 交互的情况下完成此操作。我需要:
- 通过 ssh 登录服务器
- 通过强制将我的 GUI 应用程序绑定到在 SERVER 上运行的 X 服务器来运行它
- ???
- 利润!
答案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
使其出现在远程机器的第一个显示器上。