SSH для Vagrant box в Windows?

Я использую Vagrant для запуска виртуальной виртуальной машины в Windows. На других платформах я могу просто

$ vagrant ssh

для подключения к виртуальной машине.

Как подключиться к этому ящику Vagrant в окнах?

Способ, предложенный в документации Vagrant для использования PuTTy, также не работал:

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

Ответ 1

Я использую PuTTY для подключения к моим ящикам Vagrant на Windows7.

Убедитесь, что вы

  • преобразуйте %USERPROFILE%\.vagrant.d\insecure_private_key в .ppk, используя PuTTYGen
  • используйте ключ .ppk в вашем сеансе PuTTY - настроен в Connection > SSH > Auth > файл закрытого ключа
  • использовать хост 127.0.0.1
  • использовать порт 2222 вместо 22
  • вы можете установить имя пользователя по умолчанию (бродяга) в разделе Connection > SSH > Auth > Закрытый ключ для аутентификации

Ответ 2

Вы должны исправить некоторый код бродяг, изменив только один файл, ssh.rb.

Вся информация находится здесь: https://gist.github.com/2843680

vagrant ssh теперь будет работать и в Windows, как и в Linux.


EDIT: в новых версиях это стало ненужным. Вам еще нужно добавить путь к вашему ssh.exe к переменной PATH:

Найдите ssh.exe на своем компьютере, скопируйте Путь (т.е. C:\Program Files (x86)\Git\bin), откройте "Системные настройки" , найдите "Параметры среды" "Параметры" , нажмите "Переместить путь" , добавьте путь, существующие пути с помощью ;.

Ответ 3

Другая опция, использующая двоичные файлы git:

  • Установить git: http://git-scm.com/download/win
  • Меню "Пуск" > "cmd" (сдвиг + ввод для входа в качестве администратора)
  • set PATH=%PATH%;C:\Program Files\Git\usr\bin
  • vagrant ssh

Надеюсь, что это поможет:)

Просто бонус после нескольких месяцев использования этого в Windows: используйте Console вместо терминала Win, так что вы всегда можете открыть новый терминал вкладку с набором PATH (настроить его на параметры)

Ответ 4

Загрузить 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

Ответ 5

принятый ответ действительно полезен, однако может случиться так, что вместо следующего ключа:

%USERPROFILE%\.vagrant.d\insecure_private_key

другой ключ должен быть преобразован в формат Putty:

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

Где {vagrant_machine_root} - это папка с Vagrantfile машины, с которой мы хотим подключиться, используя Putty.

Как сказал @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

Ответ 6

Теперь вы можете использовать следующий плагин для подключения с помощью putty:

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

Просто выполните

брандмауэр-плагин установить бродягу-мульти-шпатлевку

и убедитесь, что putty.exe и puttygen.exe находятся в вашем PATH

Затем вы сможете использовать

бродячая шпаклевка

Вышеупомянутые исполняемые файлы доступны из:

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

Ответ 7

Либо

  • В консоли cmd введите следующее:

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

ИЛИ

  1. Постоянно задайте путь в переменных вашей системной среды:

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

Ответ 8

Существует пакет OpenSSH для Windows, который в основном разделяет Cygwin. У него есть msi-Installer и (после установки вашего пути соответственно) работает с "vsagrant ssh":

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

Ответ 9

Теперь у меня есть гораздо лучшее решение, которое позволяет безболезненно обновлять бродягу. Он основан на исправленном файле.

Первая строка бродячего файла должна быть:

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

И исправленный файл vagrantfile_ssh (originaly ssh.rb) должен существовать в том же каталоге, что и файл vagrant. Это элегантно и функционально.

Загрузите исправленный vagrantfile_ssh.

Ответ 10

Лично я просто использую Cygwin. Это позволяет использовать многие общие команды * nix в Windows. SSH является одним из них.

Ответ 11

  • Установите Git Bash (поставляется с OpenSSH, а также grep, find, perl, sed и т.д.;)

    Если у вас установлен Vagrant, откройте appwiz.cpl (AKA Add/Remove Programs) и Repair установку Vagrant. Это приведет к тому, что бродяга добавит себя к вашему пути git - bash.

  • Откройте Git Bash (через меню "Пуск" )

  • cd ~/vagrant/mybox в папку вашего бродячего box'es и vagrant ssh

Ответ 12

Я делал, как было предложено выше, но изменяя переменную окружения в командной строке только с помощью PATH =% PATH%; "C:\Program files\ git\usr\bin"

Это не сработало. Но когда я изменил переменную окружения через настройки Windows, а затем начал новую командную строку, она работала в первый раз!

Ответ 13

Windows 7 (не тестировался в других версиях)

  • Щелкните правой кнопкой мыши на "Мой компьютер" и выберите свойства
  • Нажмите "Дополнительные системные настройки"
  • Выберите переменные среды
  • Во втором поле в разделе "Системные переменные" прокрутите вниз и щелкните по переменной "Путь" и нажмите "EDIT"
  • Убедитесь, что путь включен в значение переменной путем добавления (точка с запятой, если она отсутствует) C:\Program Files (x86)\Git\bin; (или что-то еще путь к вашему ssh.exe)
  • ОК > ОК > ОК и ОКОННЫЕ ОКНА
  • Вам нужно будет запустить бродягу, но после этого бродяга ssh должна работать постоянно

Дополнительная информация, которая может помочь с другими версиями... http://www.computerhope.com/issues/ch000549.htm

Ответ 14

очень просто, как только вы устанавливаете Vagrant manager и виртуальную коробку, попробуйте установить cygwin на windows, но при установке cygwin обязательно выберите пакет SSH, пакет VIM, который позволит вашей системе войти в вашу виртуальную машину от cygwin после поворота ваша машина через бродягу.

Ответ 15

  

обратите внимание: при появлении приглашения login as: введите "бродяга" в качестве имени пользователя (без кавычек). - Snorkpete Jun 28 '12 в 14:14

  

Или вы можете перейти в Category- > Connection- > Rlogin и установить для поля "Автоматическое имя пользователя" значение "Vagrant".

Сохраните сеанс.

Ответ 16

Я использую команду vagrant ssh с git ssh в Windows 7, 8.1 и Windows 10.

Чтобы установить только загружать msysgit из страницы проекта msysgit.

И чтобы запустить ssh.exe, включите переменные среды bin folter в Windows или установите git из Git Страница загрузки и скопируйте msysgit bin folter в C:\Program Files\Git\bin.

Ответ 17

Добавьте следующие строки в 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 - это частные и открытые ключи, расположенные в текущей папке проекта бродяг (и сгенерированные, например, ssh-keygen -t rsa -C "[email protected]") и 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 /[email protected]" -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 setup script.

Теперь вы можете vagrant ssh в окне Windows.

Для тех, кто использует vagrant-libvirt, вы можете перенаправить некоторые порты, такие как RDP от хоста к гостю. vagrant-libvirt использует ssh для переадресация портов, поэтому вам нужно настроить ssh на Windows, как в приведенных выше инструкциях, а затем вы сможете пересылать порты, такие как

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

Ответ 18

Я также встретил ту же проблему раньше.

  • В папке homestead используйте bash init.sh.

  • Если у вас нет папки .ssh в D:/Users/your username/, вам нужно получить пару ssh-ключей, ssh-keygen -t rsa -C "[email protected]".

  • Изменить 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
  1. Вам нужно использовать git bash настольное приложение.

  2. Откройте приложение для рабочего стола git bash. vagrant up

  3. vagrant ssh

Ответ 19

Другое решение здесь, но только для виртуального окна Windows 10 для проверки проводника. Пользователь ssh: IEUser ssh pass: Passw0rd!

Ответ 20

В папке установки vagrant содержится файл ssh.exe, который ведет себя как ssh (1) в linux (принимает те же флаги/аргументы).

Чтобы просмотреть все используемые аргументы, вы можете запустить vagrant ssh-config или vagrant ssh --debug для более подробного вывода.

от Powershell:

C:\\HashiCorp\\Vagrant\\embedded\\usr\\bin/ssh.EXE [email protected] -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 находится в режиме poweroff или suspended, когда вы уверены, что он действительно работает, для принудительного подключения ssh.

Если вы не хотите запоминать/вводить указанную выше команду, juste записать ее в файл vagrant.ps1, чтобы вы могли выполнить ее из своей командной строки, используя  .\vagrant_ssh.ps1

Ответ 21

Я думаю, что лучший ответ на этот вопрос будет следующим:

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

Эрик написал хорошую статью о том, как превратить ваш компьютер Windows в среду Linux. Даже с помощью хаков, чтобы заставить Vim работать изначально в cmd.

Если вы воспользуетесь этим руководством, которое в основном поможет вам установить git cli и с некоторыми хаками, вы можете вызвать командную строку и ввести бродячий ssh, находясь в папке вашего бродячего бокса, и это будет правильно делать правильные вещи, не нужно настраивать ключи ssh и т.д. Все, что поставляется с ssh и git cli/bin.

Сила этого заключается в том, что вы можете фактически запустить powershell и по-прежнему получить всю доброту * nix. Это действительно упрощает вашу среду и помогает в управлении Vagrant и другими вещами.

TL; DR Загрузите git cli и добавьте git/bin в PATH. Hack vim.bat в /bin работать для окон. Используйте ssh изначально в cmd.