9

我在 vagrant VM 上设置 X11 转发时遇到问题。

我正在为 X 服务器和 PuTTY 运行 Xming 作为我的 SSH 客户端。

这是我跑步时得到的vagrant ssh-config

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/MyName/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL
  ForwardAgent yes
  ForwardX11 yes

我的 PuTTY 已启用 X11 转发并将 X 显示位置设置为0.0.

当我这样做时,echo $DISPLAY我没有得到任何回应。

我不确定我配置错了什么。我在设置我的 PuTTY 客户端时遵循了以下建议。如果有更简单的方法来设置带有 X11 转发的 VM,请告诉我。

供参考,这些是我的Vagrantfile.

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.ssh.forward_agent = true
  config.ssh.forward_x11 = true

end
4

3 回答 3

9

我有一个非常相似的问题,但就我而言,这是 Vagrant VM 的问题。以下是一些需要检查的事项:

  • X11Forwarding需要设置yes/etc/ssh/sshd_config
  • 为 ssh 启用详细日志记录(vagrant ssh -- -vvv -X在 Linux 中,Putty 似乎也有一个-v命令行标志)并查找有趣的消息。

在我的 Vagrant VM 中,后者显示了以下信息:

debug1: Remote: No xauth program; cannot forward with spoofing

安装提供xauth(或类似)的软件包后,xorg-xauth工作正常。xorg-x11-xauthvagrant ssh -- -X

于 2015-05-02T11:18:38.040 回答
5

使用以下软件包安装 Cygwin 以解决本网站中指定的问题:

  • xorg 服务器
  • 初始化
  • xorg-docs(用于文档)
  • openssh(以防之前未安装)

startxwin然后使用cygwin 终端加载窗口。

我后来发现的一个注意事项是,最好使用以下命令 ssh 进入 vagrant:

vagrant -Y ssh

比:

vagrant -X ssh

后者在此答案中以不受信任的模式执行,并在一段时间后超时。

于 2014-06-03T11:59:29.957 回答
1

使用“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 输出会告诉您在哪里)。

也许不要在 cygwin X 服务器上使用 msys2 ssh(vagrant 默认安装环境是 msys2,但 vagrant 在 cygwin 下也可以正常工作)。(有关原因的更多信息,请参阅详细信息)

细节:

如果您收到“connect /tmp/.X11-unix/X0: No such file or directory”(在 ssh 详细模式下)或 putty 错误“PuTTY X11 代理:无法连接到转发的 X 服务器:网络错误:连接被拒绝”,尝试使用 tcp 套接字而不是默认的 unix 域套接字。

当您运行 Cygwin X 服务器时,请转到“X -listen tcp -multiwindow”(多窗口是可选的 - 它为每个应用程序打开新窗口)。

如果在命令行中使用 openssh "ssh":在进入 "vagrant ssh -- -vvv -X" 之前,进入 "export DISPLAY=localhost:0" (不是 ":0" 而是 "localhost:0" 所以它使用 tcp )。我正在运行使用 msys2 的 git bash,它似乎无法通过模拟的 unix 域套接字与我的 cygwin X 服务器正确通信。但是,如果我在我的 cygwin 提示符下使用“vagrant ssh -- -X”(对于 unix 域套接字,使用 DISPLAY=:0),它就可以工作。

很棒的信息来源:http ://dustwell.com/how-x-over-ssh-really-works.html

此外,您可以将“config.ssh.forward_x11 = true”添加到您的 Vagrantfile。我认为这会在设置来宾虚拟机或运行“vagrant reload”时在 /etc/ssh/sshd_config 中设置 X11Forwarding。- https://coderwall.com/p/ozhfva/run-graphical-programs-within-vagrantboxes

更新:不建议在没有 xauth 安全性的情况下运行 X(如上所示)。它不安全。例如,同一 LAN 上的其他计算机可以通过 tcp 连接到您的 x-server,并使用 xkeys 嗅探您的按键。使用“startxwin”而不是直接运行 X,因此它使用 XWin 的“-auth”选项。这让我很难让我的 msys2 ssh 将 X 重定向到我的 cygwin X 服务器。连接时的 ssh 日志说它找不到 xauth 命令 - 那是因为它不存在于我的 msys2 环境中。Cygwin ssh X 重定向仍然可以正常工作。只要您在 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

于 2017-03-31T18:43:32.400 回答