在Windows中的SSH到stream浪者框?

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

$ vagrant ssh 

连接到虚拟机。

我如何连接到这个在Windows的stream浪汉框?

在Vagrant文​​档中build议使用PuTTy的方式也不起作用:

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

我使用PuTTY连接到Windows7上的stream浪者箱子。

确保你

  • 使用PuTTYGen将%USERPROFILE%\.vagrant.d\insecure_private_key为.ppk
  • 在您的PuTTY会话中使用.ppk密钥 – 在连接> SSH>身份validation>私钥文件中configuration
  • 使用主机127.0.0.1
  • 使用端口2222而不是22
  • 您可以在连接> SSH>身份validation>私钥进行身份validation下设置默认用户名(vagrant)

您必须通过修改一个文件ssh.rb修补一些Vagrant代码。

所有的信息在这里: https : //gist.github.com/2843680

vagrant ssh现在也可以在Windows中工作,就像在Linux中一样。


编辑 :在较新的版本,这成为不必要的。 你仍然需要把你的ssh.exe的path添加到PATHvariables中 :

在您的计算机上searchssh.exe ,复制path(即C:\Program Files (x86)\Git\bin ),打开系统首选项,find环境variables设置,点击pathvariables,添加path,现有的path使用;

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

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

希望这可以帮助 :)

在Windows上使用它几个月后,只需要一个奖金:使用控制台而不是Winterminal,所以你可以随时打开一个新的terminal选项卡设置PATH(configuration选项)

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

使用putty.exe:

腻子GUI:

 HostName: 127.0.0.1 Port: 2222 

当您连接(terminal屏幕)时:

 User: vagrant Passwd: vagrant 

在尝试连接之前,请使用cmd.exevalidation您的VM:

  vagrant status 

如果它停机使用:

 vagrant up 

被接受的答案是非常有帮助的,但是可能会发生这种情况,而不是以下关键:

 %USERPROFILE%\.vagrant.d\insecure_private_key 

不同的密钥必须转换成腻子的格式:

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

其中{vagrant_machine_root}是我们要使用Putty连接到的计算机的Vagrantfile文件夹。

由于@ibizaman提到使用vagrant ssh-config来检查stream浪者使用的密钥:

 $ 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 

现在你也可以使用下面的插件来连接使用putty:

https://github.com/nickryand/vagrant-multi-putty

只要执行

vagrant插件安装vagrant-multi-putty

并确保putty.exe和puttygen.exe在您的PATH

那么你就可以使用

stream浪的腻子

上面提到的可执行文件可以从

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html上;

  1. 在您的cmd控制台中键入以下内容:

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

要么

  1. 永久设置系统环境variables中的path:

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

有一个Windows的OpenSSH包,基本上是一个剥离的Cygwin。 它有一个msi-Installer,并且(在相应地设置你的path之后)与“vsagrant ssh”一起工作:

http://sourceforge.net/projects/opensshwindows/?source=directory

现在我有一个更好的解决scheme,使无痛的stream感升级。 它基于修补文件。

stream浪文件的第一行应该是:

 load "vagrantfile_ssh" if Vagrant::Util::Platform.windows? 

修补过的vagrantfile_ssh文件(原名为ssh.rb )应该和vagrantfile存在于同一个目录 。 这既优雅又实用。

下载补丁vagrantfile_ssh 。

就我个人而言,我只是使用Cygwin 。 这使您可以在Windows中使用许多常见的* nix命令。 SSH就是其中之一。

  1. 安装Git Bash (附带OpenSSH,以及grepfindperlsed等;)

    如果你安装了Vagrant,打开appwiz.cpl (AKA添加/删除程序)并修复 Vagrant安装。 这将使stream浪汉join你的混帐path。

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

  3. cd〜 cd ~/vagrant/mybox到你的stream浪box'es文件夹和vagrant ssh

我是按照上面的build议做的,只是在PATH =%PATH%;“C:\ Program files \ git \ usr \ bin”

这没有奏效。 但是,当我通过Windows设置修改环境variables,然后启动一个新的命令提示符,它第一次工作!

Windows 7 (未在其他版本上testing)

  1. 右键单击“我的电脑”,然后单击属性
  2. 点击高级系统设置
  3. 点击环境variables
  4. 在“系统variables”下的第二个框中,向下滚动并单击variables“path”,然后单击编辑
  5. 确保path包含在variables值中,通过附加(如果不存在则使用分号) C:\ Program Files(x86)\ Git \ bin; (或者是你的ssh.exe的path)
  6. 确定>确定>确定,然后重新启动WINDOWS
  7. 你必须运行stream浪,但在那之后stream浪ssh应该永久工作

更多信息可能有助于其他版本… http://www.computerhope.com/issues/ch000549.htm

很简单,一旦你安装了Vagrant manager和virtual box,试着在Windows上安装cygwin,但是在安装cygwin的时候,一定要selectSSH软件包,VIM软件包,让你的系统通过cygwinlogin到你的虚拟机,stream浪汉。

请注意:当出现login as:提示符时,input“vagrant”作为用户名(不带引号)。 – Snorkpete 12年6月28日在14:14

或者你可以去Category-> Connection-> Rlogin,并将'Auto-login username'字段设置为'Vagrant'。

保存会话。

我在Windows 7,8.1和Windows 10上用git ssh使用vagrant ssh命令。

只安装从msysgit项目页面下载msysgit。

并运行ssh.exe只包括窗口环境variables的bin folter或从Git下载页面安装git,并将msysgit bin folter复制到C:\Program Files\Git\bin

Vagrantfile添加到您的Vagrantfile

 Vagrant.configure(2) do |config| # ... config.ssh.private_key_path = "vagrant_rsa" config.vm.provision "shell", path: "openssh.ps1" config.vm.provision "file", source: "./vagrant_rsa.pub", destination: "~/.ssh/authorized_keys" end 

其中vagrant_rsavagrant_rsa.pub是位于当前stream浪项目文件夹中的私钥和公钥(并且由例如ssh-keygen -t rsa -C "your@email.here" )并且openssh.ps1是:

 $is_64bit = [IntPtr]::size -eq 8 # setup openssh $ssh_download_url = "http://www.mls-software.com/files/setupssh-7.1p1-1.exe" if (!(Test-Path "C:\Program Files\OpenSSH\bin\ssh.exe")) { Write-Output "Downloading $ssh_download_url" (New-Object System.Net.WebClient).DownloadFile($ssh_download_url, "C:\Windows\Temp\openssh.exe") Start-Process "C:\Windows\Temp\openssh.exe" "/S /privsep=1 /password=D@rj33l1ng" -NoNewWindow -Wait } Stop-Service "OpenSSHd" -Force # ensure vagrant can log in Write-Output "Setting vagrant user file permissions" New-Item -ItemType Directory -Force -Path "C:\Users\vagrant\.ssh" C:\Windows\System32\icacls.exe "C:\Users\vagrant" /grant "vagrant:(OI)(CI)F" C:\Windows\System32\icacls.exe "C:\Program Files\OpenSSH\bin" /grant "vagrant:(OI)RX" C:\Windows\System32\icacls.exe "C:\Program Files\OpenSSH\usr\sbin" /grant "vagrant:(OI)RX" Write-Output "Setting SSH home directories" (Get-Content "C:\Program Files\OpenSSH\etc\passwd") | Foreach-Object { $_ -replace '/home/(\w+)', '/cygdrive/c/Users/$1' } | Set-Content 'C:\Program Files\OpenSSH\etc\passwd' # Set shell to /bin/sh to return exit status $passwd_file = Get-Content 'C:\Program Files\OpenSSH\etc\passwd' $passwd_file = $passwd_file -replace '/bin/bash', '/bin/sh' Set-Content 'C:\Program Files\OpenSSH\etc\passwd' $passwd_file # fix opensshd to not be strict Write-Output "Setting OpenSSH to be non-strict" $sshd_config = Get-Content "C:\Program Files\OpenSSH\etc\sshd_config" $sshd_config = $sshd_config -replace 'StrictModes yes', 'StrictModes no' $sshd_config = $sshd_config -replace '#PubkeyAuthentication yes', 'PubkeyAuthentication yes' $sshd_config = $sshd_config -replace '#PermitUserEnvironment no', 'PermitUserEnvironment yes' # disable the use of DNS to speed up the time it takes to establish a connection $sshd_config = $sshd_config -replace '#UseDNS yes', 'UseDNS no' # disable the login banner $sshd_config = $sshd_config -replace 'Banner /etc/banner.txt', '#Banner /etc/banner.txt' # next time OpenSSH starts have it listen on th eproper port Set-Content "C:\Program Files\OpenSSH\etc\sshd_config" $sshd_config Write-Output "Removing ed25519 key as Vagrant net-ssh 2.9.1 does not support it" Remove-Item -Force -ErrorAction SilentlyContinue "C:\Program Files\OpenSSH\etc\ssh_host_ed25519_key" Remove-Item -Force -ErrorAction SilentlyContinue "C:\Program Files\OpenSSH\etc\ssh_host_ed25519_key.pub" # use c:\Windows\Temp as /tmp location Write-Output "Setting temp directory location" Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "C:\Program Files\OpenSSH\tmp" C:\Program` Files\OpenSSH\bin\junction.exe /accepteula "C:\Program Files\OpenSSH\tmp" "C:\Windows\Temp" C:\Windows\System32\icacls.exe "C:\Windows\Temp" /grant "vagrant:(OI)(CI)F" # add 64 bit environment variables missing from SSH Write-Output "Setting SSH environment" $sshenv = "TEMP=C:\Windows\Temp" if ($is_64bit) { $env_vars = "ProgramFiles(x86)=C:\Program Files (x86)", ` "ProgramW6432=C:\Program Files", ` "CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files", ` "CommonProgramW6432=C:\Program Files\Common Files" $sshenv = $sshenv + "`r`n" + ($env_vars -join "`r`n") } Set-Content C:\Users\vagrant\.ssh\environment $sshenv # record the path for provisioners (without the newline) Write-Output "Recording PATH for provisioners" Set-Content C:\Windows\Temp\PATH ([byte[]][char[]] $env:PATH) -Encoding Byte # configure firewall Write-Output "Configuring firewall" netsh advfirewall firewall add rule name="SSHD" dir=in action=allow service=OpenSSHd enable=yes netsh advfirewall firewall add rule name="SSHD" dir=in action=allow program="C:\Program Files\OpenSSH\usr\sbin\sshd.exe" enable=yes netsh advfirewall firewall add rule name="ssh" dir=in action=allow protocol=TCP localport=22 Start-Service "OpenSSHd" 

这是joefitzgerald / packer-windows openssh安装脚本的简化版本。

现在,你可以vagrant ssh到Windows框中。

对于那些使用vagrant-libvirt的人来说,你可能希望将RDP等一些端口从主机转发到guest。 vagrant-libvirt使用ssh进行端口转发,所以你需要像上面的指令一样在Windows上设置ssh,然后你将能够转发端口,如:

 config.vm.network :forwarded_port, host: 3389, guest: 3389, id: "rdp", gateway_ports: true, host_ip: '*' 

我也遇到过同样的问题。

  1. 在homestead文件夹中,使用bash init.sh

  2. 如果你没有在D:/Users/your username/ .ssh文件夹,你需要得到一对ssh密钥, ssh-keygen -t rsa -C "you@homestead"

  3. 编辑Homestead.yaml(homestead /), authoriza: ~/.ssh/id_rsa.pub

  4. keys: - ~/.ssh/id_rsa

5。

 folders: - map: (share directory path in the host computer) to: /home/vagrant/Code sites: - map: homestead.app to: /home/vagrant/Code 
  1. 你需要使用git bash桌面应用程序 。

  2. 打开git bash桌面应用程序。 vagrant up

  3. vagrant ssh

这里的另一个解决scheme,但只为虚拟箱的Windows 10testing浏览器。 ssh user:IEUser ssh pass:Passw0rd!

我认为对这个问题的更好的回答是:

https://eamann.com/tech/linux-flavored-windows/

Eric写了一篇关于如何将Windows电脑变成Linux环境的文章。 甚至用黑客来让Vim本身在cmd中工作。

如果你通过这个指南,基本上让你安装git cli,并用一些黑客,你可以提出一个命令提示符,并在你的stream浪者的箱子文件夹中键入vagrant ssh,它会适当地做正确的事情,没有需要configurationSSH密钥等所有与SSH和git cli /斌。

这个的力量是,你可以真正运行PowerShell,并仍然获得所有的*尼克斯善良。 这真的简化了你的环境,并帮助运行Vagrant和其他东西。

TL; DR下载Git Cli并将PATH添加到git / bin。 在/ bin中的vim.bat文件可以用于windows。 在cmd中本地使用ssh。