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

Tyl*_*ler 11 linux ssh cygwin putty

我在 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 包
  • 我试过使用 juststartx而不是startxwin
  • 我曾尝试setenv DISPLAY localhost:0setenv DISPLAY my.ip.address

不幸的是,问题仍然存在。我已经用尽了关于这个主题的谷歌搜索资源,所以我将不胜感激任何帮助。谢谢!

Jos*_*ley 12

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

Cygwin的X常见问题Cygwin的 邮件 列表中有更多的细节。

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

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"
Run Code Online (Sandbox Code Playgroud)

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

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"
Run Code Online (Sandbox Code Playgroud)

这不如 Cygwin 的新默认值安全;它应该只在单用户系统上使用,并且将防火墙配置为阻止与 XWin 的连接可能是明智的。

  • @yellowandred 它以 `C:\` 开头,所以它是 Windows 样式的路径,而不是 Cygwin 终端。我只是将其放在 Windows 快捷方式的“目标”部分中。CMD 应该可以工作。PowerShell 应该可以工作,但您可能必须更新引用。 (2认同)

小智 6

作为 Josh Kelley 所说的替代方案,您还可以编辑 startxwin 文件并将“-listen tcp”添加到默认服务器参数中。

旧:defaultserverargs="-multiwindow"

新增内容:defaultserverargs="-multiwindow -listen tcp"

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

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

为了安全起见,您也可能只允许来自 localhost 的连接,因为这是 Putty 转发它的地方。


小智 0

这是针对 xming 的,但也许这个常见问题解答有一些帮助?其背后的想法是相同的,但在本地计算机上使用 xming 而不是 cygwin。https://wiki.utdallas.edu/wiki/display/FAQ/X11+Forwarding+using+Xming+and+PuTTY