使用"startxwin"运行cygwin X服务器。使用putty或者cygwin ssh客户端ssh到你的虚拟机中。
如果使用cygwin ssh,请在运行ssh之前执行"export DISPLAY=:0"(即“vagrant ssh -- -vvv -X”)。
对于putty:运行"startxwin -- -listen tcp",在putty连接配置中启用ssh-X11转发,将"X显示位置"设置为"localhost:0"并设置.Xauthority文件的正确路径(浏览,它可能在你的主目录中;startxwin输出将告诉你它在哪里)。
也许不要使用msys2 ssh(vagrant默认安装环境是msys2,但在cygwin下vagrant也可以正常工作)与cygwin X服务器一起使用。(有关更多信息请参见详细信息)
详情:
如果出现"connect /tmp/.X11-unix/X0: No such file or directory"(在ssh verbose模式下)或putty错误"PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Connection refused",尝试使用tcp套接字而不是默认的unix域套接字。
当您运行Cygwin X服务器时,请输入“X -listen tcp -multiwindow”(multiwindow是可选的,它为每个应用程序打开新窗口)。
如果使用命令行中的openssh“ssh”:在进行“vagrant ssh -- -vvv -X”之前,请输入“export DISPLAY = localhost:0”(不是“:0”,而是“localhost:0”,因此它使用tcp)。我正在运行git bash,它使用msys2,似乎无法通过模拟的unix域套接字与我的cygwin X服务器正常通信。但是,如果我在我的cygwin提示符下使用“vagrant ssh -- -X”(使用DISPLAY =:0进行unix域套接字),它可以工作。
伟大的信息来源:
http://dustwell.com/how-x-over-ssh-really-works.html
此外,您可以在Vagrantfile中添加“config.ssh.forward_x11 = true”。我认为这将在设置客户虚拟机或运行“vagrant reload”时,在“/etc/ssh/sshd_config”中设置X11Forwarding。-
https://coderwall.com/p/ozhfva/run-graphical-programs-within-vagrantboxes
更新:不建议在没有xauth安全性的情况下运行X(如上所示)。这是不安全的。例如,同一局域网中的其他计算机可以通过tcp连接到您的x服务器,并使用xkeys嗅探您的按键。改用“startxwin”而不是直接运行X,以便它使用XWin的“-auth”选项。这使得我很难让我的msys2 ssh将X重定向到我的cygwin X服务器。连接时的ssh日志显示无法找到xauth命令-因为它在我的msys2环境中不存在。Cygwin ssh X-redirection仍然正常工作。只要在putty会话配置中设置.Xauthority文件路径(它可能就在您的主目录中),Putty就可以正常工作。
我发现tcp/unix-domain套接字问题/解决方案实际上在cygwin faq中(这个faq非常有帮助,包含了很多信息):
6.7. 通过PuTTY转发的X会话无法连接。非cygwin本地X客户端无法连接。
X服务器现在默认使用-nolisten tcp,这通过不打开TCP/IP套接字,仅打开本地(UNIX域)套接字来增加X服务器的安全性。非cygwin应用程序无法连接该套接字。
https://x.cygwin.com/docs/faq/cygwin-x-faq.html