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
Либо
ИЛИ
-
Постоянно задайте путь в переменных вашей системной среды:
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
-
Вам нужно использовать git bash настольное приложение.
-
Откройте приложение для рабочего стола git bash. vagrant up
-
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.