SSH в Vagrant box в Windows?
Я использую Vagrant для запуска виртуальной машины VirtualBox в windows. На других платформах, я могу просто
$ vagrant ssh
для подключения к виртуальной машине.
Как я могу подключиться к этой бродячей коробке в windows?
способ, предложенный в Бродячей документации для использования шпатлевки, также не сработал:
http://docs-v1.vagrantup.com/v1/docs/getting-started/ssh.html
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:
- установить git:http://git-scm.com/download/win
- меню Пуск > cmd (shift + enter, чтобы перейти в качестве администратора)
set PATH=%PATH%;C:\Program Files\Git\usr\bin
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
или
в своем
cmd
консоль введите следующее:set PATH=%PATH%;C:\Program Files (x86)\Git\bin
или
постоянно прописать путь в переменных среды системы:
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 - один из них.
установить Git Bash (поставляется с OpenSSH, а также
grep
,find
,perl
,sed
и т. д.;)если у Вас установлен Vagrant, откройте
appwiz.cpl
(AKA установка и удаление программ) и ремонт установка Бродяга. Это заставит vagrant добавить себя к вашему пути git-bash.откройте Git Bash (через меню Пуск)
cd ~/vagrant/mybox
в папку vagrant box'ES иvagrant ssh
Я делал, как было предложено выше, но изменение переменной среды в командной строке только с PATH=%PATH%;"C:\Program файлы\git\usr\bin"
Это не работа. Но когда я изменил переменную среды через настройки Windows, а затем запустил новую командную строку, она работала в первый раз!
Windows 7 ( не проверял на других версиях )
- Правой Кнопкой Мыши на "мой компьютер" и выберите Свойства
- Нажмите Кнопку Дополнительные Параметры Системы
- Нажмите Кнопку Переменные Среды
- во втором поле в разделе "системные переменные" прокрутите вниз и нажмите на переменную "путь" и нажмите Редактировать
- убедитесь, что путь включен в значение переменной путем добавления (точка с запятой, если ее там нет и)C:\Program Файлы (x86)\Git\bin; (или каков бы ни был путь к вашему ssh.exe)
- ОК > ОК > ОК и ПЕРЕЗАГРУЗИТЬ WINDOWS
- вам придется запустить 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: '*'
Я также встречал ту же проблему раньше.
в папке homestead используйте
bash init.sh
.если у вас нет .ssh папка в
D:/Users/your username/
, вам нужно получить пару ключей ssh,ssh-keygen -t rsa -C "you@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.
vagrant up
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.
выполните следующие действия для установки:
- доступ cmder.net;
- Нажмите кнопку загрузить полностью;
- распакуйте
- (необязательно) Поместите свои собственные исполняемые файлы в папку bin, которая будет введена в ваш путь.
- Run Cmder (Cmder.exe)
терминал 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.