Я использую Vagrant для запуска VirtualBox VM в Windows . На других платформах я могу просто
$ vagrant ssh
подключиться к ВМ.
Как мне подключиться к этой Vagrant коробке в Windows?
Предложенный в документации Vagrant способ использования PuTTY также не работает:
http://docs-v1.vagrantup.com/v1/docs/getting-started/ssh.html
Я использую PuTTY для подключения к моим Vagrant-боксам на Windows7.
Убедись, что ты
%USERPROFILE%\.vagrant.d\insecure_private_key
в .ppk, используя PuTTYGen127.0.0.1
Вы должны исправление некоторый код Vagrant, изменив только один файл, ssh.rb
.
Вся информация здесь: https://Gist.github.com/2843680
vagrant ssh
теперь будет работать и в Windows, как и в Linux.
EDIT: в более новых версиях это стало ненужным. Вам все еще нужно добавить путь к вашему ssh.exe
к вашей PATH
переменной :
Найдите на своем компьютере ssh.exe, скопируйте путь (т.е. C:\Program Files (x86)\Git\bin
), откройте Системные настройки, найдите параметры переменная среды, нажмите переменную пути, добавьте путь, разделяя существующие пути с использованием ;
.
Еще один вариант использования git binaries:
set PATH=%PATH%;C:\Program Files\Git\usr\bin
vagrant ssh
Надеюсь это поможет :)
Просто бонус после нескольких месяцев использования этого в Windows: используйте Console вместо терминала Win, так что вы всегда можете открыть новую вкладку терминала с установленной переменной PATH (настройте ее для параметров)
Загрузите PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/
Использование PuTTY.exe:
PuTTY GUI:
HostName: 127.0.0.1
Port: 2222
При подключении (экран терминала):
User: vagrant
Passwd: vagrant
Прежде чем пытаться подключиться, проверьте ваш VM с помощью cmd.exe:
vagrant status
Если он отключен, используйте:
vagrant up
принятый ответ действительно полезен, однако может случиться так, что вместо следующего ключа:
%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:
$ 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
Тогда вы сможете использовать
бродячая замазка
Вышеупомянутые исполняемые файлы доступны из:
http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.html
Или
В консоли cmd
введите следующее:
set PATH=%PATH%;C:\Program Files (x86)\Git\bin
ИЛИ ЖЕ
Постоянно установите путь в переменных среды вашей системы:
C:\Program Files (x86)\Git\bin;
Существует пакет OpenSSH для Windows, который по сути является урезанным Cygwin. Он имеет msi-Installer и (после установки вашего пути соответственно) работает с "vsagrant ssh":
http://sourceforge.net/projects/opensshwindows/?source=directory
Лично я просто использую Cygwin . Что позволяет вам использовать многие распространенные команды * nix в Windows. SSH является одним из них.
Я делал, как предложено выше, но менял переменную среды в командной строке только с PATH =% PATH%; "C:\Program Files\git\usr\bin"
Это не сработало. Но когда я изменил переменную Environment через Windows Settings, а затем запустил новую команду Prompt, это сработало в первый раз!
Установить Git Bash (поставляется с OpenSSH, а также grep
, find
, Perl
, sed
и т. Д .;)
Если у вас установлен Vagrant, откройте appwiz.cpl
(AKA Установка и удаление программ) и Repair Бродячая установка. Это заставит vagrant добавить себя в путь к git-bash.
Откройте Git Bash (через меню "Пуск")
cd ~/vagrant/mybox
в папку вашего бродячего ящика и vagrant ssh
Теперь у меня есть намного лучшее решение, которое позволяет безболезненное обновление Vagrant . Оно основано на исправленном файле.
Первая строка vagrantfile должна быть:
load "vagrantfile_ssh" if Vagrant::Util::Platform.windows?
И исправленный файл vagrantfile_ssh (первоначально названный ssh.rb) должен существовать в том же каталоге, что и vagrantfile. Это одновременно элегантно и функционально.
Загрузите исправлено vagrantfile_ssh .
Windows 7 (не тестировалась в других версиях)
Дополнительная информация, которая может помочь с другими версиями ... http://www.computerhope.com/issues/ch000549.htm
очень просто: после установки Vagrant manager и виртуального блока попробуйте установить cygwin в Windows, но при установке cygwin обязательно выберите пакет SSH, VIM, который позволит вашей системе войти в систему VM от cygwin после раскручивания вашей машины через бродягу.
Другое решение здесь, но только для виртуальной коробки Windows 10 для тестирования Explorer . Ssh пользователь: IEUser Ssh pass: Passw0rd!
Я использую команду vagrant ssh
с git ssh
в Windows 7, 8.1 и Windows 10.
Для установки загружайте только msysgit со страницы проекта msysgit .
А для запуска ssh.exe
включите только переменные окружения bin folter
to windows или установите git со страницы загрузки Git и скопируйте msysgit bin folter
в C:\Program Files\Git\bin
.
Папка установки 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-соединение.
Если вы не хотите запоминать/вводить указанную выше команду, просто напишите ее в файле vagrant.ps1
, чтобы вы могли выполнить ее из вашего powershell, используя .\vagrant_ssh.ps1
обратите внимание: при входе в систему как: Приглашение введите «vagrant» в качестве имени пользователя (без кавычек). - Сноркете 28 июня '12 в 14:14
Или вы можете перейти в Category-> Connection-> Rlogin и установить для поля «Auto-login username» значение «Vagrant».
Сохранить сессию.
Добавьте следующие строки в ваш 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 "[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 .
Теперь вы можете 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: '*'
Я также встречал ту же проблему раньше.
В папке 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
Вам нужно использовать git bash desktop app .
Откройте настольное приложение git bash. vagrant up
vagrant ssh
вы можете использовать эмулятор терминала cmder для Windows.
Выполните следующие шаги для установки:
Терминальный cmder на Windows
Теперь выполните команду, необходимую для настроек VM vagrant, для подключения выполните только команду vagrant ssh; Watch cmder предлагает встроенный ssh-клиент.
Надеюсь, это поможет.