X11 从无头服务器到另一个 X11 服务器
Posted
技术标签:
【中文标题】X11 从无头服务器到另一个 X11 服务器【英文标题】:X11 from headless server to another X11 server 【发布时间】:2011-11-30 16:20:38 【问题描述】:我有一个在无头服务器上运行的应用程序。它是一个 Web 应用程序,但对于某个功能(调试),它运行基于 swing 的应用程序。由于服务器是无头的(我已经设置了 -Djava.awt.headless=true)它在启动时会引发异常...
我尝试安装 Xvfb,但这并不能解决我的问题,因为 Xvfb 没有 GUI 输出,而且我看不到输出。
所以我想将该服务器的输出重定向/转发到另一台(例如我的笔记本电脑),以便查看 Swing 应用程序并对其进行调试。
有没有办法使用 DISPLAY 变量或其他任何方法来实现它?
谢谢。
【问题讨论】:
【参考方案1】:如果您的笔记本电脑上运行了 X-server,您可以在 SSH 中启用 X-Forwarding 以 ssh 进入您的服务器,它会自动将您的 DISPLAY 变量设置为 :10.0 行中的某个值,您可以运行您的应用程序将 GUI 导出到本地 X 服务器。
否则,如果您想手动设置 DISPLAY,则需要确保服务器可以通过 x-server 端口上的直接 TCP 连接访问您的笔记本电脑。
【讨论】:
【参考方案2】:你可以
-
运行 Xvnc 并使用 VNC 客户端连接到它
与 x11vnc 一起运行 Xvfb 并使用 VNC 客户端连接到它(这与上述不同,但对您来说最终结果是相同的;仅当您出于其他原因已经运行 Xvfb 时才有用)
按照 favouretti 的回答使用 ssh 转发 X11 会话(或直接 TCP 连接)
如果您的笔记本电脑上有 Windows 并且不想在其上运行 X11 服务器,则选项 1 或 2 很有用。然后,您可以使用 Windows 原生 VNC 客户端。
您还可以使用 RDP 代替 VNC(X11 端为 X11rdp 或 xrdp,Windows 端为 RDP 客户端)。这应该会提供更快的刷新率,但据说在 X11 端设置起来更困难(我没有亲自做过)。 OTOH Windows 有一个内置的 RDP 客户端,因此您甚至不必在 Windows 端安装任何东西。
如果您的笔记本电脑上有 X11,则使用选项 3 会容易得多。
【讨论】:
【参考方案3】:我没有足够的“Rep”来评论其他用户的答案,所以我的帖子是为了增加“favoretti”的好答案。
如果您运行的是 Windows PC,请安装 cygwin unix 子系统并安装 x-windows 和 ssh。如果使用 OSX 启动 X11 或 Mavericks 以后,请安装 xQuartz。
然后如上所述,您可以 ssh 进入目标(无头)远程服务器并指定 -X 标志以允许 X 流量通过网络返回
ssh -l <user> -X -v <host>
你可能需要也可能不需要调用命令
xhost +
允许 X 流量流回您的机器。
【讨论】:
以上是关于X11 从无头服务器到另一个 X11 服务器的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 linux 的服务器终端中打开 X11 应用程序?