Putty->Cygwin X11 转发“无法打开显示”错误

Putty->Cygwin X11 转发“无法打开显示”错误

我在 Windows 机器上使用 Putty ssh 进入另一台服务器。到达那里后,我尝试使用 X11 转发将窗口弹出到我的电脑上。远程系统不是问题,因为它是一个大型系统,许多其他用户都以同样的方式成功使用它。

我通过 Putty 登录系统没有问题,然后startxwin在 cygwin 中运行。然而,xterm在 Putty 中运行时,我收到错误xterm Xt error: Can't open display: localhost:##.0,其中井号是两个整数,其值每次登录时都会发生变化。

  • 我在 Putty 设置中启用了 X11 转发
  • 我尝试将“X 显示位置”设置为localhost:0
  • 我已确保下载了 cygwin 的 X11 包
  • 我曾尝试使用而startx不是startxwin
  • 我已经尝试过setenv DISPLAY localhost:0setenv DISPLAY my.ip.address

不幸的是,问题仍然存在。我已经用尽了有关这个主题的 Google 搜索资源,因此我非常感谢任何帮助。谢谢!

答案1

最近的 Cygwin 更新已将其 X 服务器更改为默认不监听 TCP 连接。相反,Cygwin 的 X 使用(Cygwin 实现的)Unix 域套接字,而 PuTTY(作为原生 Windows 程序)不知道如何使用这些套接字。

Cygwin X 常见问题解答赛格威 邮寄 列表有更多详细信息。

我的解决方案是采用标准的 Cygwin 快捷方式,使用启动xwin启动 X:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"

-listen tcp并将其替换为使用我想要的选项(添加和删除)直接调用 xinit -auth

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -multiwindow -listen tcp"

这比 Cygwin 的新默认设置安全性较低;它只应该在单用户系统上使用,并且配置防火墙以阻止与 XWin 的连接可能是明智的。

答案2

除了 Josh Kelley 所说的方法之外,您还可以编辑 startxwin 文件并将“-listen tcp”添加到默认服务器参数中。

旧:defaultserverargs="-multiwindow"

新:defaultserverargs="-multiwindow -listen tcp"

此外,启用身份验证后,我必须将 putty 指向由 startxwin 脚本创建的身份验证文件。我的文件位于此处:c:\cygwin64\home\USERNAME.Xauthority

由于此文件已重新创建,您必须在重置 xserver 后重新启动 putty 会话。

为了安全起见,您可能还只允许来自本地主机的连接,因为这是 putty 将其转发的地方。

答案3

我尝试将“X 显示位置”设置为 localhost:0

请尝试将“X 显示位置”设置为“:0.0”!

export DISPLAY=:0.0

乔希·凯利提到了Cygwin X 常见问题解答

3.13. 我升级了,现在 X 客户端无法连接

答案1:

自 X 服务器 1.17 起,默认情况下服务器不监听 TCP/IP 连接,只接受 unix 域套接字上的本地连接。

对于本地客户端,使用 DISPLAY=:0.0,而不是 DISPLAY=localhost:0.0、DISPLAY=127.0.0.1:0.0、DISPLAY=::1:0.0 等。

答案4

正如其他人所说,诀窍是添加-listen tcp到服务器参数中。但是,我建议通过调用startxwin -- -listen tcplet startxwinbuild 其余xinit命令来执行此操作。

在“开始”菜单快捷方式中:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"

相关内容