在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添加到PATH
variables中 :
在您的计算机上searchssh.exe ,复制path(即C:\Program Files (x86)\Git\bin
),打开系统首选项,find环境variables设置,点击pathvariables,添加path,现有的path使用;
。
另一个使用git二进制文件的选项:
- 安装git: http : //git-scm.com/download/win
- 开始菜单> cmd(shift +input以pipe理员身份进入)
-
set PATH=%PATH%;C:\Program Files\Git\usr\bin
-
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上;
或
-
在您的
cmd
控制台中键入以下内容:set PATH=%PATH%;C:\Program Files (x86)\Git\bin
要么
-
永久设置系统环境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就是其中之一。
-
安装Git Bash (附带OpenSSH,以及
grep
,find
,perl
,sed
等;)如果你安装了Vagrant,打开
appwiz.cpl
(AKA添加/删除程序)并修复 Vagrant安装。 这将使stream浪汉join你的混帐path。 -
打开Git Bash(通过开始菜单)
- cd〜
cd ~/vagrant/mybox
到你的stream浪box'es文件夹和vagrant ssh
我是按照上面的build议做的,只是在PATH =%PATH%;“C:\ Program files \ git \ usr \ bin”
这没有奏效。 但是,当我通过Windows设置修改环境variables,然后启动一个新的命令提示符,它第一次工作!
Windows 7 (未在其他版本上testing)
- 右键单击“我的电脑”,然后单击属性
- 点击高级系统设置
- 点击环境variables
- 在“系统variables”下的第二个框中,向下滚动并单击variables“path”,然后单击编辑
- 确保path包含在variables值中,通过附加(如果不存在则使用分号) C:\ Program Files(x86)\ Git \ bin; (或者是你的ssh.exe的path)
- 确定>确定>确定,然后重新启动WINDOWS
- 你必须运行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_rsa
和vagrant_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: '*'
我也遇到过同样的问题。
-
在homestead文件夹中,使用
bash init.sh
-
如果你没有在
D:/Users/your username/
.ssh文件夹,你需要得到一对ssh密钥,ssh-keygen -t rsa -C "you@homestead"
。 -
编辑Homestead.yaml(homestead /),
authoriza: ~/.ssh/id_rsa.pub
。 -
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
-
你需要使用git bash桌面应用程序 。
-
打开git bash桌面应用程序。
vagrant up
-
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。