我有一台运行 Windows 并带有 Cygwin X 服务器的笔记本电脑。在这台机器上,我有一个在 VMWare 下运行的虚拟 Linux 盒子。
我在VM上设置export DISPLAY=xserver:0并在cygwin shell上执行xhost +xclient。我可以使用主机名或 IPv4 地址。我现在可以通过重定向显示来运行我的 X 程序(主要是 emacs/xterm)。到目前为止,一切都很好。
我还需要使用 AWS VPN 客户端连接到 AWS(糟糕的客户端,但它可以工作)。它在 Windows 笔记本电脑上运行,但也被虚拟机接收。我现在可以在任意一台机器上与 AWS 通信。到目前为止,一切都很好。
但是,如果我尝试在 Linux 计算机上启动任何 X 程序,它会拒绝对其进行身份验证。我刚刚收到错误“需要授权,但未指定授权协议”。如果我添加 IP 地址或服务器名称,也没关系 - 同样的错误。 IP 地址均未更改(我已使用 Wireshark 验证了这一点)。
如果我执行 xhost + 来禁用身份验证,那么我可以连接,但这显然是非常不安全的,我不想这样做。
我尝试过 xauth 兔子洞,但这只是用 Invalid MIT-MAGIC-COOKIE-1 错误替换了上述错误。
知道发生什么事了吗?
答案1
答案似乎是运行
主机+IP地址
与托管 X11 服务器的计算机的外部接口的 IP。 VPN 客户端似乎正在导致 X11 请求以某种方式重定向到其自身。这很奇怪,但似乎有效。
答案2
嗯。
但是,如果我尝试在 Linux 机器上启动任何 X 程序,它会拒绝对其进行身份验证
大概这是后在 Linux 计算机 (=VM) 上运行“DISPLAY=xserver:0”。在这种情况下,任何 xclient 都会尝试打开到 xserver:6000 的新连接。它还意味着,此时您在 Linux 计算机上有一个 ssh 会话。 ssh 有内置的机制来处理 X。
我不知道这在你的环境中是如何工作的 - 我没有可以使用的 Cygwin 版本/你没有说你正在使用 ssh 客户端。可能在这个组合中的某个地方缺少了一些东西。首先,阅读 ssh 客户端的文档 - IIRC with putty,您需要在连接之前在配置中显式设置一个标志。如果您无法解决此问题,那么您可以尝试下载 Mobaxterm 的副本,并尝试通过 ssh 会话运行 xclient(同样,无需设置 DISPLAY)。