我无法连接到 Vagrant 处理的 VM:在 %PATH% 的任何目录中都找不到 `ssh` 可执行文件,但我有它

I can't connect to a Vagrant handled VM: `ssh` executable not found in any directories in the %PATH%, but I have it

我完全是 Vagrant 的新手,我遇到了以下问题。我正在使用 Windows 8.1.

我做了以下操作:

1) 首先,我通过以下语句将其从 github 下载到主机的文件夹中:

git clone https://github.com/Udacity/ud381

2) 然后我执行了:

vagrant up

下载了包含来宾 VM 的 Vagrant Box

当我现在执行 vagrant up 命令时,我收到此消息:

C:\Users\Andrea\Documents\workspaces\Real-Time\ud381>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'udacity/ud381' is up to date...
==> default: There was a problem while downloading the metadata for your box
==> default: to check for updates. This is not an error, since it is usually due

==> default: to temporary network problems. This is just a warning. The problem
==> default: encountered was:
==> default:
==> default: Failed connect to atlas.hashicorp.com:443; No error
==> default:
==> default: If you want to check for box updates, verify your network connectio
n
==> default: is valid and try again.
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 5000 => 5000 (adapter 1)
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/Andrea/Documents/workspaces/Real-Time/ud381
==> default: Machine already provisioned. Run `vagrant provision` or use the `--
provision`
==> default: flag to force provisioning. Provisioners marked to run always will
still run.

我认为它是正确的,但我不是绝对确定,因为我似乎有一些警告消息,但它说:默认:机器已启动并准备就绪! 所以我觉得还可以(可以吗?)

然后我尝试通过 SSH 执行 vagrant ssh 语句连接到它,但我收到此错误消息:

C:\Users\Andrea\Documents\workspaces\Real-Time\ud381>vagrant ssh
`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use your favorite SSH client with the following
authentication information shown below:

Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/Users/Andrea/Documents/workspaces/Real-Time/ud381/.vagrant/machi
nes/default/virtualbox/private_key

在 Google 上搜索我发现要使用此语句,我需要 git 路径进入 PATH 环境变量。我检查并设置了它,实际上在 PATH 变量中我有这两个值:

C:\HashiCorp\Vagrant\bin;C:\Program Files\Git\bin

第一个是流浪者路径,第二个是Git路径。

所以这不是问题所在。在线搜索我还发现了这个 StacOverflow 讨论:

`ssh` executable not found in any directories in the %PATH%

针对此类问题发给link:https://gist.github.com/haf/2843680

在此 link 中,它展示了如何将 ssh.rb 文件修改到此文件夹 C:\vagrant\vagrant\embedded\lib\ruby\gems 中。 9.1\gems\vagrant-1.0.3\lib\vagrant\ssh.rb

问题是我没有这个文件夹,而是这样的:

C:\HashiCorp\Vagrant\embedded\lib\ruby\gems.0.0\gems\

并且此文件夹不包含 vagrant-1.0.3\lib\vagrant** 子文件夹(包含 **ssh.rb 文件)但包含3个目录分别命名为rake-0.9.6rdoc-4.0.0test-unit-2.0.0.0 不包含 ssh.rb 文件。

搜索此文件后,我在这些文件夹中发现了 2 个不同的版本:

C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.7.4\plugins\kernel_v1\config

C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.7.4\plugins\kernel_v2\config

我认为与本教程的不同之处可能在于它引用了一个非常旧的 Vagrant 版本(已有 4 年历史)并且我已经安装了 1.7.4 Vagrant 版本。

所以我真的不知道我可以在 SSH 中连接到由 Vagrant 处理的 VM。

你能帮帮我吗?

Tnx

错误信息

C:\Users\Andrea\Documents\workspaces\Real-Time\ud381>vagrant ssh `ssh`
executable not found in any directories in the %PATH% variable. Is an 
SSH client installed?

指出您当前使用的 cli(当您在 windows 下工作时可能是 cmd 或 powershell)找不到已安装的 ssh 客户端。这意味着您的 cli 无法找到可以处理通过 ssh 连接到另一台服务器(在本例中为您的 vagrantbox)的程序。
这是一个非常常见的场景,因为 windows 没有开箱即用的 ssh 客户端(不像 ubuntu 或 osx)。

据我所知,没有 ssh program/command 可以轻松安装并放入您的 PATH,以便它可以与 cmd 一起使用。

在这种情况下,您可能想要做的是安装具有这些功能的不同 cli。你这里有几个选项,它们在错误消息中也有说明:

Try installing Cygwin, MinGW or Git, all of which
contain an SSH client

我建议您使用 Git Bash,因为您正在使用 git.

,您可能已经在系统上安装了它

因此,要执行 vagrant ssh,您的第一步将是通过执行程序本身(git 附带的,在我的系统上它开始 Git Bash可以在以下位置找到:C:\Program Files\Git\git-bash.exe) 或右键单击 Windows Explorer 中的目录列表并选择 Git Bash here(这只有在您选中 Git 上的某个框时才有效安装)。
它将打开一个新的 cli,它与 linux 类似的命令一起工作。 你现在应该能够进入你的 vagrant 目录并执行 vagrant ssh

您在问题中链接到的解决方案似乎不再有效,因为与 git 一起使用的 ssh 客户端路径似乎已经改变。

请参阅您找到的其他 SO post 中的 Ygor Thomaz' commentPATH 路径已更改为:

C:\Program Files\Git\usr\bin

..so 运行 这在 cmd:

set PATH=%PATH%;C:\Program Files\Git\usr\bin

相关: