SSH для Vagrant в Windows? - PullRequest
       147

SSH для Vagrant в Windows?

170 голосов
/ 27 марта 2012

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

$ vagrant ssh

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

Как мне подключиться к этому Vagrant-боксу в Windows?

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

http://docs -v1.vagrantup.com / v1 / docs / Getting-Start / ssh.html

Ответы [ 22 ]

2 голосов
/ 29 июля 2013

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

2 голосов
/ 08 августа 2014
  1. Установка Git Bash (поставляется с OpenSSH, а также grep, find, perl, sed и т. Д.;)

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

  2. Открыть Git Bash (через меню Пуск)

  3. cd ~/vagrant/mybox в папку вашего бродячего ящика и vagrant ssh
1 голос
/ 26 сентября 2016

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

1 голос
/ 20 января 2015

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

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

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

0 голосов
/ 05 июня 2017

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

0 голосов
/ 05 мая 2017

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

  1. В папке "Усадьба" введите bash init.sh.

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

  3. Редактировать Homestead.yaml (усадьба /), 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

Вам необходимо использовать настольное приложение git bash .

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

vagrant ssh

0 голосов
/ 09 марта 2017

Добавьте следующие строки в 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/$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 box.

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

config.vm.network :forwarded_port, host: 3389, guest: 3389, id: "rdp", gateway_ports: true, host_ip: '*'
0 голосов
/ 26 декабря 2015

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

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

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

0 голосов
/ 14 февраля 2013

также обратите внимание: при появлении запроса на вход в систему как: введите «vagrant» в качестве имени пользователя (без кавычек).- Snorkpete 28 июня '12 в 14: 14

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

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

0 голосов
/ 21 ноября 2017

Папка установки 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

...