Windows 中的 SSH 到流浪者框 SSH to Vagrant box? ?

我正在使用 Vagrant 在 windows 中启动一个 VirtualBoxVM。 在其他平台上,我可以

$ vagrant ssh

连接虚拟机。

我如何连接到这个流浪者在窗口框?

流浪者文档中建议的使用 PuTTy 的方法也没有奏效:

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

169700 次浏览

我使用 PuTTY 连接到我在 Windows7上的流浪者盒子。

确保你

  • 使用 PuTTYGen%USERPROFILE%\.vagrant.d\insecure_private_key转换为. ppk
  • 在 PuTTY 会话中使用. ppk 密钥-在 Connection > SSH > Auth > Private key file 中配置
  • 使用主机 127.0.0.1
  • 使用端口2222而不是22
  • 您可以在 Connection > SSH > Auth > Private key 下面设置默认用户名(凭空)以进行身份验证

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

使用 putty.exe:

腻子 GUI:

HostName: 127.0.0.1
Port: 2222

连接时(终端屏幕) :

User: vagrant
Passwd: vagrant

在尝试连接之前,请使用 cmd.exe 验证 VM:

 vagrant status

如果使用率低:

vagrant up

您必须通过仅修改一个文件 ssh.rb来编写一些流浪汉代码。

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

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


编辑 : 在较新的版本中,这变得没有必要了。你仍然需要 将 ABC0的路径添加到 PATH变量:

在计算机上搜索 小声点,复制路径(即 C:\Program Files (x86)\Git\bin) ,打开系统首选项,查找 环境变量设置,单击路径变量,添加路径,使用 ;分隔现有路径。

现在我有一个更好的解决方案,使无痛流浪者升级。 它是基于打补丁的文件。

流浪汉档案的第一行应该是:

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

修补后的 流浪者文件 _ ssh文件(原名为 )应该与 流浪汉档案位于同一目录中。这既优雅又实用。

下载 打补丁的流浪者文件

注意: 当登录为: 提示符出现时,输入’流浪者’作为用户名(没有引号)。- Snorkpete Jun 28’12 at 14:14

或者你可以进入分类-> 连接-> Rlogin,并将“ Auto-login username”字段设置为“ Vagrant”。

保存会话。

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

  1. 安装 git: http://git-scm.com/download/win
  2. 启动菜单 > cmd (shift + enter to go as Administrator)
  3. set PATH=%PATH%;C:\Program Files\Git\usr\bin
  4. vagrant ssh

希望这对你有帮助:)

在 Windows 上使用了几个月后的一个好处是: 使用 控制台而不是 Win 终端,这样您就可以随时打开一个设置了 PATH 的新终端选项卡(在选项上配置它)

就我个人而言,我只使用 Cygwin。它允许您在 Windows 中使用许多常见的 * nix 命令。宋承宪就是其中之一。

有一个用于 Windows 的 OpenSSH 包,它基本上是一个精简版 Cygwin。它有一个 msi-Installer,(在相应地设置路径之后)可以使用“ vsagrant ssh”:

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

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

    如果你已经安装了流浪汉,打开 appwiz.cpl(又名添加/删除程序)和 Repair的流浪汉安装。这将使流浪者添加到您的 git-bash 路径中。

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

  3. 到你的流浪汉箱子的文件夹和 vagrant ssh

现在你也可以使用下面的插件使用腻子进行连接:

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

执行吧

流浪汉插件安装流浪汉-多油灰

并确保 putty.exe 和 puttygen.exe 在 PATH 中

然后你就可以使用

流浪者油灰

上述可执行文件可从以下网址获得:

Http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

都行

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

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

OR

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

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

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

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

Eric 写了一篇关于如何将 Windows 计算机转换为 Linux 环境的文章。甚至用黑客技术让 Vim 在 cmd 工作。

如果你运行这个指南,它基本上让你安装 git cli,通过一些技巧,你可以打开一个命令提示符,在你的流浪者文件夹中输入流浪者 ssh,它会正确地做正确的事情,不需要配置 ssh 键等。所有这些都是 ssh 和 git cli/bin 带来的。

它的强大之处在于,您可以实际运行 powershell,并且仍然可以获得所有 * nix 优点。这真的简化了您的环境,并有助于运行流浪汉和其他事情。

DR 下载 Git cli 并将 Git/bin 添加到 PATH。在/bin 中修改 vim.bat 以便为窗口工作。在 cmd 中本机使用 ssh。

Windows7 (未在其他版本上测试)

  1. 右键单击“我的电脑”,然后单击属性
  2. 单击“高级系统设置”
  3. 点击环境变量
  4. 在“系统变量”下的第二个框中,向下滚动,点击变量“路径”,然后点击编辑
  5. 通过附加(如果没有分号,则为分号) C: 程序文件(x86) Git bin;(或者任何到 ssh.exe 的路径) ,确保路径包含在变量 Value 中
  6. OK > OK > OK 和 重启窗口
  7. 你将不得不运行流浪者上升,但之后,流浪者 ssh 应该永久工作

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

接受的答案真的很有帮助,但是它可能会发生,而不是下面的关键:

%USERPROFILE%\.vagrant.d\insecure_private_key

一个不同的键必须转换成腻子的格式:

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

其中 {vagrant_machine_root}是一个文件夹与 Vagrantfile的机器,我们要连接到使用腻子。

正如@ibizaman 提到的,使用 vagrant ssh-config来检查流浪汉使用什么键:

$ 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

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

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

要运行 ssh.exe,只包含 bin folter到 windows 环境变量或从 Git 下载页面安装 git 并将 msysgit bin folter复制到 C:\Program Files\Git\bin

很简单,一旦你安装了流浪者管理器和虚拟机,尝试在 windows 上安装 cygwin,但是在安装 cygwin 时,一定要选择 SSH 包,VIM 包,它可以让你的系统在通过流浪者旋转你的机器后从 cygwin 登录到你的虚拟机。

我正在按照上面的建议做,但是只用 PATH =% PATH% 更改命令行上的环境变量

这招不管用。但是,当我通过 Windows 设置修改环境变量,然后启动一个新的命令提示符时,它第一次工作了!

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是位于当前流浪者项目文件夹(由 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 框。

对于那些使用 流浪汉的用户,您可能希望将一些端口(如 RDP)从主机转发到客户机。Vasrant-libvirt 使用 ssh 作为 端口转发,因此您需要像上面的说明那样在 Windows 上设置 ssh,然后您将能够转发端口,如:

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

我以前也遇到过同样的问题。

  1. 在宅基地文件夹中,使用 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. 钥匙: - ~/. 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 桌面应用程序

  3. vagrant ssh

这里还有一个解决方案,但是只针对 Windows10的虚拟机来测试 Explorer。 Ssh 用户: IEUser 密码!

漂泊不定的安装文件夹包含一个 ssh.exe,其行为类似于 linux 上的 ssh (1)(使用相同的标志/参数)。

要查看使用的所有参数,可以运行 vagrant ssh-configvagrant ssh --debug以获得更详细的输出。

来自 Powershell:

C:\\HashiCorp\\Vagrant\\embedded\\usr\\bin/ssh.EXE ubuntu@127.0.0.1 -p 2222 -o LogLevel=FATAL -o DSAAuthentication=yes -o Strict
HostKeyChecking=no -i "C:/Users/path/to/project/.vagrant/machines/default/virtualbox/private_key"

这对于 vagrant status表示 vm 处于 poweroffsuspended模式的情况非常有用,当您确定 vm 实际上正在运行时,可以强制 ssh 连接。

如果您不想记住/键入上面的命令,只需将其写入一个 vagrant.ps1文件,这样您就可以使用 .\vagrant_ssh.ps1

您可以使用模拟器终端 cmder 为窗口。

安装步骤如下:

  1. 访问 cmder.net;
  2. 点击下载全部;
  3. 拉开拉链
  4. (可选)将您自己的可执行文件放入 bin 文件夹,以便注入到 PATH 中。
  5. 运行 Cmder (Cmder.exe)

enter image description here

Windows 上的终端 cmder

现在执行设置 VM 漂移所需的命令,对于连接只执行漂移 ssh 命令; Watch cmder 提供了嵌入式 ssh 客户端。

希望这个能帮上忙。

一个很好的替代 PuTTY 的虚拟终端是 薄荷味的,它比 PuTTY 有更多的可配置选项。