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


11

我在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软件包
  • 我尝试使用Just startx代替startxwin
  • 我曾尝试setenv DISPLAY localhost:0setenv DISPLAY my.ip.address

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


localhost:##.0您在这里看到什么实际数字?您在Windows计算机上运行哪种X软件?
肯斯特,2015年

Answers:


11

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

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

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

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

并用我想要的选项(添加-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"

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


在哪里运行?在Cygwin终端/ PS / CMD中
yellowandred '18

1
@yellowandred它以`C:`开头,所以它是Windows风格的路径,而不是Cygwin终端。我只是将其放在Windows快捷方式的“目标”部分中。CMD应该起作用。PowerShell应该可以工作,但是您可能必须更新报价。
乔什·凯利

6

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

旧的:defaultserverargs =“-multiwindow”

新增:defaultserverargs =“-multiwindow -listen tcp”

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

由于此文件是重新创建的,因此您必须在重置xserver之后重新启动腻子会话。

为了安全起见,您可能还只允许来自本地主机的连接,因为腻子是通过本地主机进行连接的。


4

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

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

export DISPLAY=:0.0

Josh Kelley提到了Cygwin X常见问题解答

3.13。我已升级,现在X客户端无法连接

A1:

从X服务器1.17开始,默认情况下,该服务器不侦听TCP / IP连接,仅接受Unix域套接字上的本地连接。

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



0

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

在开始菜单快捷方式中:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.