如何远程启动应用程序,以便在本地显示 GUI

如何远程启动应用程序,以便在本地显示 GUI

我知道这是一个初学者的问题...但我已经搜索过了,结果很沮丧。我对 Lunux 很了解,但我从来没有处理过 XServer。

问题 1:

我以 alpha 用户身份从 OSX 通过 SSH 进入 UBUNTU 14.04 台式机。

用户 alpha 也在该桌面上本地登录。

我想(通过我的终端)运行一个应该显示在 UBUNTU 机器上的应用程序(以便它在本地登录用户的本地显示屏上可见)。

今天,当我从 OSX 终端执行此操作时出现此错误:

15:21:20:157 AWT-EventQueue-0: Error
java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation     which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
<etc>

注意:当我从本地终端(在 UBUNTU 上)执行此操作时,它可以正常工作,因此程序没有任何问题。

问题2:

如果 UBUNTU 机器没有头,我该如何将窗口转移到另一台机器,例如我的 Mac?

谢谢彼得

答案1

对于您的第二个问题:使用 ssh 连接时添加 -X(或 -Y 表示受信任连接)参数,并确保您的 Mac 上有 X11。示例:

ssh -X [email protected]

这会将您的 X11 窗口路由到您的 Mac 上的本地 X 服务器上。

看:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh.1.html

对于第一个问题:

显示和权限

X 程序需要两条信息才能连接到 X 显示器。

  • 它需要显示器的地址,当您本地登录时,该地址通常为 :0;当您远程登录时,该地址通常为 :10、:11 等(但该数字可能会根据活动的 X 连接数而变化)。显示器的地址通常在 DISPLAY 环境变量中指示。

  • 它需要显示的密码。X 显示密码称为 magic cookies。Magic cookies 不是直接指定的:它们始终存储在 X 授权文件中,这些文件是“display :42 has cookie 123456”形式的记录集合。X 授权文件通常在 XAUTHORITY 环境变量中指示。如果未设置 $XAUTHORITY,程序将使用 ~/.Xauthority。

摘自: https://unix.stackexchange.com/a/10126

请参阅该帖子以获得更详细的解释。

答案2

远程情况下,您需要通过导出 DISPLAY 环境变量来设置要使用的显示。

例如。export DISPLAY=:0

对于您的第二个问题,最简单的方法是在 ubuntu 上设置 VNC 服务器,并使用 VNC 客户端从您的 Mac 进行连接。

如何:http://www.howtoforge.com/how-to-install-vnc-server-on-ubuntu-14.04

答案3

1)我不确定,也许可以试试export DISPLAY=0

2) 要在您正在使用的机器上显示 GUI,请使用该-Y选项运行 SSH。

相关内容