在Windows中如何SSH到Vagrant虚拟机?

173

我正在使用Vagrant在Windows中启动一个VirtualBox虚拟机。在其他平台中,我可以直接

$ vagrant ssh

如何在Windows中连接到此Vagrant box?

Vagrant文档建议使用PuTTy进行连接,但这种方式也没有起作用:

http://docs-v1.vagrantup.com/v1/docs/getting-started/ssh.html


2
大型教程,介绍如何在Windows 7/8中SSH到Vagrant虚拟机箱的操作步骤。链接 - Sliq
12
这不再是问题了。如果你的路径中有ssh.exe(例如c:\Program Files\git\bin),那么“vagrant ssh”就可以工作了。 - Omri Spector
1
FYI,由于许可证原因,Vagrant 不包括 ssh。虽然这似乎是可能的,但在律师批准之前,我们不会这样做。在 Windows 安装程序中默认安装 ssh.exe……这让我感到困惑。 - KCD
23个回答

245

我使用PuTTY在Windows7上连接到我的Vagrant虚拟机。

请确保:

  • 使用PuTTYGen%USERPROFILE%\.vagrant.d\insecure_private_key转换为.ppk格式
  • 在PuTTY会话中配置连接 > SSH > Auth > Private key file中的.ppk密钥
  • 使用主机127.0.0.1
  • 使用2222端口代替22端口
  • 您可以在连接 > SSH > Auth > Private key for authentication下设置默认用户名(vagrant)

28
备注:当出现“login as:”提示时,请输入“vagrant”作为用户名(不带引号)。 - snorkpete
5
然后对于Vagrant中的每个虚拟机都要这样做。你知道,Vagrant可以使用多个虚拟机。所以,只需使用正确的解决方案,而不是变通方法:我的答案如下。在Vagrant中进行小修补。 - Michael Field
20
您可以在“连接 > 数据 > 自动登录用户名”下设置默认用户名,PPK设置在“连接 > SSH > Auth > 用于身份验证的私钥”下。 - mpen
8
您可以使用 vagrant ssh-config 命令来了解在 putty 中需要提供哪些选项。 - ibizaman
1
在使用@ibizaman的方法在putty上准备好之前,另一件要做的事情是使用PuttyGen将私钥转换为ppk格式(导入>保存)。 - Idan Gozlan
显示剩余7条评论

123
您需要修改一个文件ssh.rb来打补丁(patch)一些Vagrant代码。
所有信息都在这里:https://gist.github.com/2843680 现在,vagrant ssh也可以在Windows上像Linux一样使用了。
编辑: 在更新的版本中,这变得不必要了。您仍然需要ssh.exe的路径添加到您的PATH变量中: 在计算机上搜索ssh.exe,复制路径(例如C:\Program Files (x86)\Git\bin),打开系统首选项,找到环境变量设置,单击路径变量,添加路径,使用;分隔现有路径。

1
如果您使用此解决方法,请在Github拉取请求中发表评论,现在是时候合并了。https://github.com/mitchellh/vagrant/pull/933 - Cory Dolphin
4
看起来这个已经合并了大约三个月了。它绝对存在于1.2.2版本中。 - Johann
这在最近的 Vagrant 发行版中是否仍然需要或已修补? - Alex
2
@Alex 最近的 Vagrant 版本中已经修复了这个问题。我进行了测试并在这里记录了下来:http://www.robertpate.net/blog/2013/getting-the-vagrant-ssh-command-to-work-on-windows/ - robertpateii
1
快速设置Git OpenSSH路径,打开PowerShell并运行: [Environment] :: SetEnvironmentVariable(“Path”,“$ env:Path; c:\ Program Files(x86)\ Git \ bin \”,“User”) - Janusz Skonieczny
显示剩余2条评论

96

使用 git 二进制文件的另一种选项:

  1. 安装 git:http://git-scm.com/download/win
  2. 开始菜单 > cmd (按shift+enter以管理员身份运行)
  3. set PATH=%PATH%;C:\Program Files\Git\usr\bin
  4. vagrant ssh

在 Windows 上使用数月后,还有一个额外的奖励:使用 Console 而不是 Win 终端,这样您可以随时打开新的终端标签并设置 PATH(在选项中配置)。


有人可以点赞这个回答吗?一直在努力理解为什么它能够工作,现在我明白了!谢谢。 - RadiantHex
这对我来说很好用。因为我有GIT,所以它比切换到Putty更加干净,因为你可以重复使用同一个控制台窗口。 - Bartvds
2
谢谢,但我现在使用conemu。它类似于Console,但更加灵活。我用它来包装许多控制台,如cmd.exe、git bash和putty,还有别名和其他花哨的东西。 - Bartvds
如果您在安装Vagrant之前安装了Git Bash,那么Vagrant将会将自己添加到Git Bash路径中,从而允许它从Git Bash终端使用Git Bash SSH。 - ThorSummoner
4
在 Git 2.5.0 版本中,PATH 应该为 "C:\Program Files\Git\usr\bin"。 - vladimir
1
set PATH=%PATH%;C:\Program Files\Git\usr\bin 工作正常!谢谢! - v.babak

72

下载Putty:http://www.chiark.greenend.org.uk/~sgtatham/putty/

使用putty.exe:

Putty图形用户界面:

HostName: 127.0.0.1
Port: 2222

当您连接(终端屏幕)时:

User: vagrant
Passwd: vagrant

在尝试连接之前,请使用 cmd.exe 验证您的虚拟机:

 vagrant status
如果它是关闭的,请使用:

如果它已经关闭了,请使用:

vagrant up

1
这完美地展示了如何不迷失在言辞中。太棒了,谢谢! - appoll

33

接受的答案非常有帮助,但可能会出现以下键的情况:

%USERPROFILE%\.vagrant.d\insecure_private_key

需要将另一个密钥转换为Putty的格式:

{vagrant_machine_root}/.vagrant/machines/default/virtualbox/private_key

其中{vagrant_machine_root}是包含我们想要使用Putty连接的机器的Vagrantfile的文件夹。

正如@ibizaman所提到的,使用vagrant ssh-config来检查vagrant使用的密钥:

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile c:/dev/test/.vagrant/machines/default/virtualbox/private_key <-- HERE IS THE KEY YOU NEED TO CONVERT TO THE PUTTY FORMAT
  IdentitiesOnly yes
  LogLevel FATAL

4
如果你想使用Putty,那么这是最好的答案。你需要转换正确的私钥。非常感谢! - johnzachary
1
值得一提的是,您应该检查“用户”值,并确保将其提供给Putty中的Connection->Data->Auto-login用户名。在我的VM上,名称为“ubuntu”,我一直在尝试并且失败地以“vagrant”身份登录。 - perlyking
这是正确的答案,这些事情(设置)在多年中发生了变化。 - Bud Damyanov

11

7

要么

  1. In your cmd console type the following:

    set PATH=%PATH%;C:\Program Files (x86)\Git\bin
    

或者

  1. Permanently set the path in your system's environment variables:

    C:\Program Files (x86)\Git\bin;
    

4

这对我来说是迄今为止最好的解决方案。您提供的链接自2010年以来就没有更新过。在http://www.mls-software.com/opensshd.html上有一个更新版本可用。 - icc97

2
  1. 安装Git Bash(自带OpenSSH,以及grepfindperlsed等工具;)

    如果您已经安装了Vagrant,请打开appwiz.cpl(也称为添加/删除程序),并修复Vagrant安装。这将使Vagrant添加到您的git-bash路径中。

  2. 打开Git Bash(通过开始菜单)

  3. cd ~/vagrant/mybox 到您的vagrant box文件夹并执行vagrant ssh

2

我按照上面的建议进行操作,但在命令行中只更改环境变量,即PATH=%PATH%;"C:\Program files\git\usr\bin"。

然而此方法并未奏效。但当我通过Windows设置修改环境变量并重新启动命令提示符时,它立刻奏效了!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接