如何在“Windows 10”上启用可与 X11 转发配合使用的 SSH 远程服务器?我收到“远程:没有 xauth 程序;无法转发 X11。”

如何在“Windows 10”上启用可与 X11 转发配合使用的 SSH 远程服务器?我收到“远程:没有 xauth 程序;无法转发 X11。”

我已看过大量关于此主题的帖子,但我尚未找到涵盖我的特定用例的帖子。

我想通过 ssh 连接到我的 Windows 10 PC 并在 Mac 笔记本电脑上查看 X 图形应用程序。原因是我在 Mac 上的 vscode 上进行远程开发,但我正在使用这台 Windows 10 服务器的 GPU,该服务器还与其 GUI 一起用于其他一些任务。

当我连接到另一台 Linux 服务器时,我能够从我的 Mac 上看到 x11-apps(例如,使用 xclock 测试),因此本地客户端(我的 Mac 笔记本电脑)上的配置似乎没有问题。

从 Mac 客户端连接到 Windows ssh 服务器时,使用 -v 标志执行 ssh 后,debug1 的输出如下:

debug1: Remote: No xauth program; cannot forward X11.
X11 forwarding request failed on channel 0

(供参考:Windows 上的 sshd_config 文件上启用了 X11 转发。)

因此似乎缺少 xauth 程序。我知道我们可以在 Linux 上安装 xauth,但我们如何在 Windows 上安装呢?我在一些帖子中读到使用 Xming,但这是将 Windows 用作客户端,而不是服务器。

我注意到有很多帖子指出使用 WSL 之类的东西来使 X11 转发工作;但没有一个涵盖我的用例。我错过了什么?在 Windows 上无法做到这一点吗?我必须从 WSL 执行此操作才能连接到 Windows PC 吗?

答案1

如果我理解正确的话,您正在 Mac 上运行 X 服务器,并且您想要在 Windows 机器上运行应用程序(X 客户端)(我猜想是为了使用那里更大的 CPU 马力),并将显示重定向回 Mac 上的 X 服务器。

您可能会对我使用的“客户端”和“服务器”感到困惑。
在 X-Windows 术语中,显示端是服务器,而应用程序运行的系统是客户端。
这与大多数人认为的客户端/服务器完全相反,每当讨论 X-Windows 时,这都是造成混淆的主要原因。

Windows 不包含 X Windows 客户端环境。您不仅需要 xauth,还需要更多。您需要整个 X 客户端设置。

所以这永远不会起作用。

WSL 允许您在 Windows 中运行 Linux 环境。在 Linux 环境中可以使用 X,但要使其工作起来可能非常复杂,因为您需要在 Windows 之上堆叠多层复杂性。

或者,您可以直接在 Windows 中设置合适的 X 客户端。CygWin 或 XMing 就是很好的例子,它们都具有 X 服务器和 X 客户端,但都不是真正的 Windows 原生程序,而是经过编译的 Linux 程序,可以在 Windows 中运行。要让它们工作起来也是一件非常麻烦的事情。

无论哪种方式:您仍然必须编译您的 X 客户端应用程序以在 WSL Linux、Windows/CygWIn 或 Windows/XMing 下运行,以便能够在 Windows 服务器上运行它们。

考虑到以上情况,您可能需要重新考虑要实现的目标。这需要付出很多努力。Windows 服务器的 CPU 优势值得吗?

相关内容