SSH в Vagrant box в Windows?


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

$ vagrant ssh

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

Как я могу подключиться к этой бродячей коробке в windows?

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

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

22 167

22 ответа:

Я использую шпатлевку для подключения к моим бродячим коробкам на Windows7.

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

  • преобразование %USERPROFILE%\.vagrant.d\insecure_private_key для .ППК с помощью PuTTYGen
  • использовать .ключ ppk в вашем сеансе шпатлевки-настроен в Connection > SSH > Auth > Private key file
  • использовать host 127.0.0.1
  • используйте порт 2222 вместо 22
  • вы можете установить имя Пользователя по умолчанию (vagrant) в разделе Connection > SSH > Auth > Private key для проверка подлинности

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

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

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


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

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

другой вариант с использованием двоичных файлов 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: use консоль вместо терминала Win, так что вы всегда можете открыть новую вкладку терминала с набором пути (настроить его на опции)

скачать Putty:http://www.chiark.greenend.org.uk / ~sgtatham / putty/

С помощью Putty.exe:

Putty GUI:

HostName: 127.0.0.1
Port: 2222

при подключении (экран терминала):

User: vagrant
Passwd: vagrant

прежде чем пытаться подключиться, проверить вашу виртуальную машину с использованием УМК.exe:

 vagrant status

если это использовать:

vagrant up

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

%USERPROFILE%\.vagrant.d\insecure_private_key

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

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

здесь {vagrant_machine_root} - Это папка с 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

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

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

просто выполнить

Vagrant plugin install vagrant-multi-putty

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

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

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

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

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

или

  1. в своем cmd консоль введите следующее:

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

или

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

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

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

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

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

первая строка vagrantfile должна быть:

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

и к vagrantfile_ssh файл (оригинальное имя ssh.РБ) должен существовать в том же каталоге, что и vagrantfile. Это одновременно элегантно и функционально.

скачать исправлено vagrantfile_ssh.

лично я просто использовать программа. Что позволяет использовать много общих команд *nix в Windows. SSH - один из них.

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

    если у Вас установлен Vagrant, откройте appwiz.cpl (AKA установка и удаление программ) и ремонт установка Бродяга. Это заставит vagrant добавить себя к вашему пути git-bash.

  2. откройте Git Bash (через меню Пуск)

  3. cd ~/vagrant/mybox в папку vagrant box'ES и vagrant ssh

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

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

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

  1. Правой Кнопкой Мыши на "мой компьютер" и выберите Свойства
  2. Нажмите Кнопку Дополнительные Параметры Системы
  3. Нажмите Кнопку Переменные Среды
  4. во втором поле в разделе "системные переменные" прокрутите вниз и нажмите на переменную "путь" и нажмите Редактировать
  5. убедитесь, что путь включен в значение переменной путем добавления (точка с запятой, если ее там нет и)C:\Program Файлы (x86)\Git\bin; (или каков бы ни был путь к вашему ssh.exe)
  6. ОК > ОК > ОК и ПЕРЕЗАГРУЗИТЬ WINDOWS
  7. вам придется запустить vagrant, но после этого vagrant ssh должен работать постоянно

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

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

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

или вы можете перейти в категорию->соединение->Rlogin и установить поле "Auto-login username" в "Vagrant".

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

Я использую с 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.

добавьте следующие строки в свой 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 - это закрытые и открытые ключи, расположенные в текущей папке проекта vagrant (и созданные, например,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/' } |
    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.

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

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

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

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

  2. если у вас нет .ssh папка в D:/Users/your username/, вам нужно получить пару ключей ssh,ssh-keygen -t rsa -C "you@homestead".

  3. Изменить Усадьба.ямл (усадьба/),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. вы должны использовать ГИТ Баш рабочего стола приложение.

  2. откройте настольное приложение git bash. vagrant up

  3. vagrant ssh

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

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

чтобы увидеть все используемые аргументы, вы можете запустить vagrant ssh-config или vagrant 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 говорит ваша виртуальная машина находится в poweroff или suspended режим, когда вы уверены, что он действительно работает, чтобы заставить ssh-соединение.

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

вы можете использовать эмулятор терминала cmder для windows.

выполните следующие действия для установки:

  1. доступ cmder.net;
  2. Нажмите кнопку загрузить полностью;
  3. распакуйте
  4. (необязательно) Поместите свои собственные исполняемые файлы в папку bin, которая будет введена в ваш путь.
  5. Run Cmder (Cmder.exe)

enter image description here

терминал cmder на Windows

теперь выполнить команду требуется для настройки виртуальной машины Vagrant, а также для подключения только выполнить команду бродячего СШ; Часы cmder предлагает встроенный ssh-клиент.

Я надеюсь, что это помогает.

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

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

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

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

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

TL; DR загрузите git cli и добавьте git/bin в путь. Взломать vim.bat in / bin для работы в windows. Используйте ssh изначально в cmd.