![Putty->Cygwin X11 转发“无法打开显示”错误](https://linux22.com/image/1446318/Putty-%3ECygwin%20X11%20%E8%BD%AC%E5%8F%91%E2%80%9C%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80%E6%98%BE%E7%A4%BA%E2%80%9D%E9%94%99%E8%AF%AF.png)
我在 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:0
了setenv 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
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 tcp
let startxwin
build 其余xinit
命令来执行此操作。
在“开始”菜单快捷方式中:
C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"