【问题标题】:SSH into vagrant with X server set upSSH 进入 vagrant 并设置 X 服务器
【发布时间】:2013-11-20 11:02:06
【问题描述】:

我在 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 时,我没有得到任何回应。

我不确定我的配置错误。我按照following advice 设置我的 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

【问题讨论】:

  • 这个问题已经通过遵循advice 使用 Cygwin 作为 X 服务器来解决。
  • 您能否将其添加为下面的答案并接受它?评论不是正确答案的最佳位置。
  • @RadekSimko 完成。感谢您指出!

标签: windows ssh vagrant putty xming


【解决方案1】:

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

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

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

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

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

【讨论】:

  • sshd_config 中的设置是大多数描述都没有提到的秘诀!
【解决方案2】:

使用以下软件包安装 Cygwin 以解决此 website 中指定的问题:

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

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

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

vagrant -Y ssh

比:

vagrant -X ssh

后者在不受信任的模式下执行,如answer 并在一段时间后超时。

【讨论】:

    【解决方案3】:

    使用“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

    【讨论】:

      猜你喜欢
      • 2014-09-11
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 2019-04-01
      相关资源
      最近更新 更多