SSH в Vagrant вікно в Windows?


172

Я використовую Vagrant для запуску VM VirtualBox у Windows. В інших платформах я просто можу

$ vagrant ssh

підключитися до ВМ.

Як я можу підключитися до цієї коробки Vagrant у Windows?

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

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


2
Великий підручник з цього питання, в якому
видно

11
Це вже не проблема. Якщо у вас шлях ssh.exe (наприклад, c: \ Program Files \ git \ bin), функція 'vagrant ssh' працює.
Омрі Спектор

1
FYI Vagrant due to licensing reasons. It seems possible but until a lawyer gives the go-ahead on this, we're not gong to do this. за замовчуванням не включає ssh Ship ssh.exe в інсталятор Windows ... це спантеличило мене
KCD

Відповіді:


243

Я використовую PuTTY для підключення до своїх візиток Vagrant в Windows7.

Переконайтесь, що ви

  • конвертувати в .ppk%USERPROFILE%\.vagrant.d\insecure_private_key за допомогою PuTTYGen
  • використовувати ключ .ppk у своєму сеансі PuTTY - налаштований у З'єднання> SSH> Auth> Файл приватного ключа
  • використовувати хост 127.0.0.1
  • використовувати порт 2222 замість 22
  • ви можете встановити ім'я користувача за замовчуванням (бродячий) у розділі З'єднання> SSH> Auth> Приватний ключ для аутентифікації

28
також зверніть увагу: коли з'являється запит login as: введіть "vagrant" як ім'я користувача (без лапок).
snorkpete

5
А потім зробіть це для кожного VM у Vagrant. Ви знаєте, Vagrant працює з декількома машинами управління. Отже, просто використовуйте правильне рішення, а не вирішення: нижче моя відповідь. Невеликий пластир у Vagrant.
Майкл Філд

20
Ви можете встановити ім'я користувача за замовчуванням під, Connection > Data > Auto-login usernameа параметр PPK знаходиться підConnection > SSH > Auth > Private key for authentication
mpen

1
Якщо ви віддаєте перевагу тому, як я захищаю ваші приватні ключі паролями, у перспективі може бути простіше використовувати додаток pageant.exe при запуску, завантаживши в нього свій файл PPK. Потім ви один раз вводите свій пароль для виходу на сайт, і ви можете увійти, не вказуючи пароль ppk у терміналі putty.
Ларрі Сільверман

8
Ви можете використовувати, vagrant ssh-configщоб знати, які варіанти дати шпаклівці.
ibizaman

121

Ви повинні виправити деякі Vagrant код, змінивши лише один файл, ssh.rb.

Вся інформація тут: https://gist.github.com/2843680

vagrant ssh тепер працюватиме і в Windows, як і в Linux.


EDIT : У нових версіях це стало непотрібним. Ви все ще повинні додати шлях ssh.exeдо своєї PATHзмінної :

Знайдіть ssh.exe на своєму комп’ютері, скопіюйте Шлях (тобто C:\Program Files (x86)\Git\bin), відкрийте Налаштування системи, знайдіть Налаштування змінної середовища , натисніть на Змінна Шлях, додайте шлях, відокремлюючи існуючі шляхи за допомогою ;.


1
Будь ласка, прокоментуйте запит на виклик Github щодо проблеми, якщо ви використовуєте цю роботу навколо, настав час її об'єднати. github.com/mitchellh/vagrant/pull/933
Cory Dolphin

4
Здається, це було об'єднано близько трьох місяців тому. Він безумовно існує у версії 1.2.2.
Йоганн

Це все-таки потрібно чи зафіксовано в останніх блукаючих стравах?
Олексій

2
@Alex Це безперечно зафіксовано у останніх версіях Vagrant. Я перевірив це і задокументував тут: robertpate.net/blog/2013/…
robertpateii

1
Швидко встановіть шлях до git OpenSSH, відкрийте PowerShell та запустіть: [Environment]::SetEnvironmentVariable("Path", "$env:Path;c:\Program Files (x86)\Git\bin\", "User")
Janusz Skonieczny

96

Ще один варіант використання бінарних файлів 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: використовуйте консоль замість терміналу Win, тому ви завжди можете відкрити нову вкладку терміналу з набором PATH (налаштуйте його на параметри)


Хтось підтримав цю відповідь. Намагався зрозуміти, як у мене це працює, тепер я знаю! Дякую
RadiantHex

Це добре працювало для мене. Як у мене є GIT, він працює набагато чистіше, а потім переходить на Putty, оскільки ви можете просто використовувати те саме вікно консолі.
Bartvds

2
Дякую, але зараз я використовую conemu . Він схожий, але гнучкіший, ніж консольний. У мене він обертає багато консолей, таких як cmd.exe, git bash і putty з псевдонімами та іншими модними речами.
Bartvds

4
для Git 2.5.0 PATH має бути "C: \ Program Files \ Git \ usr \ bin".
Владимир

1
встановити PATH =% PATH%; C: \ програмні файли \ Git \ usr \ bin Працює ідеально! Дякую!
v.babak

72

Завантажте програму Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/

Використання putty.exe:

Графічний інтерфейс шпаклівки:

HostName: 127.0.0.1
Port: 2222

Під час підключення (екран терміналу):

User: vagrant
Passwd: vagrant

Перш ніж спробувати підключитися, перевірте свій VM за допомогою cmd.exe:

 vagrant status

Якщо це вниз, використовуйте:

vagrant up

1
Це прекрасно показує, як не загубитися словами. Дивовижно, дякую!
appoll

31

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

%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

4
Якщо ви хочете використовувати Putty, то це найкраща відповідь. Ви повинні конвертувати правильний приватний ключ. Велике дякую!
johnzachary

1
Варто зазначити, що ви повинні перевірити Userзначення та переконайтесь, що ви постачаєте його в Putty in Connection-> Data-> Auto-login username. На моєму VM це ім'я було, ubuntuі я неодноразово намагався ввійти як vagrant.
захоплюючись

11

Тепер ви також можете використовувати наступний плагін для підключення за допомогою шпаклівки:

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

Просто виконати

встановити бродяжний плагін vagrant-multi-putty

і переконайтеся, що putty.exe і puttygen.exe знаходяться у вашій PATH

Тоді ви зможете користуватися

бродяжна шпаклівка

Вищезгадані виконавчі файли доступні у:

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


6

Або

  1. У cmdконсолі введіть наступне:

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

АБО

  1. Постійно встановлюйте шлях до змінних оточення вашої системи:

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

4

Існує пакет OpenSSH для Windows, який в основному є позбавленим Cygwin. Він має msi-Installer і (після встановлення відповідного шляху) працює з "vsagrant ssh":

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


Це було, безумовно, найкращим рішенням для мене. Посилання, яке ви надаєте, не оновлювалось з 2010 року. На сайті mls-software.com/opensshd.html
icc97

2

Зараз у мене є набагато краще рішення, яке дозволяє безболісне оновлення Вагранта. Він заснований на виправленому файлі.

Перший рядок vagrantfile повинен бути:

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

І виправлений файл vagrantfile_ssh (оригінально названий ssh.rb ) повинен існувати в тому ж каталозі, що і vagrantfile . Це і елегантно, і функціонально.

Завантажте виправлений vagrantfile_ssh .


2
  1. Установка Git Bash (Поставляється з OpenSSH, а також grep, find, perl, sedі т.д.;)

    Якщо у вас встановлено програму Vagrant, відкрийте appwiz.cpl(AKA Add / Remove Programs) та Repairвстановіть програму Vagrant. Це змусить бродячого додати себе до вашого шляху до git-bash.

  2. Відкрийте Git Bash (через меню "Пуск")

  3. cd ~/vagrant/mybox до папки бродячих ящиків і vagrant ssh

2

Я робив, як було запропоновано вище, але міняв змінну середовища в командному рядку лише з PATH =% PATH%; "C: \ Program files \ git \ usr \ bin"

Це не вийшло. Але коли я змінив змінну оточуючого середовища через налаштування Windows, а потім запустив нову командну підказку, вона працювала вперше!


1

Особисто я просто використовую Cygwin . Що дозволяє використовувати багато поширених * nix команд у Windows. SSH є одним з них.


Вам потрібно буде амінувати свій PATH, щоб включити каталог Cygwin bin, щось на кшталтset PATH=%PATH%;c:\cygwin\bin
David Soroko

1

Windows 7 (не тестується на інших версіях)

  1. Клацніть правою кнопкою миші на "Мій комп'ютер" і натисніть "Властивості"
  2. Клацніть Додаткові параметри системи
  3. Клацніть Змінні середовища
  4. У другому полі "Системні змінні" прокрутіть вниз і натисніть на змінну "Шлях" та натисніть "ЗРИТИТИ"
  5. Переконайтеся, що шлях включений у значення змінної, додавши (крапкою з комою, якщо його немає та) C: \ Program Files (x86) \ Git \ bin; (або будь-який шлях до вашого ssh.exe)
  6. Гаразд> ОК> ОК і ЗАВАНТАЖИТЕ ВІКНИ
  7. Вам доведеться запустити бродягу, але після цього бродячий ssh ​​повинен працювати постійно

Детальніше, яка може допомогти в інших версіях ... http://www.computerhope.com/isissue/ch000549.htm


1

дуже просто, як тільки ви встановите менеджер Vagrant і віртуальну скриньку, спробуйте встановити cygwin на Windows, але, встановлюючи cygwin, переконайтесь, що виберіть пакет SSH, пакет VIM, який дозволить вашій системі увійти в систему VM від cygwin після відкручення машини через бродячий.


Тут найкраща відповідь. Cygwin дасть вам терміновий термінал для роботи. Дивовижно!
Неораптор

1

Ви можете використовувати термінал cmder емулятора для вікон.

Виконайте нижче кроки для встановлення:

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

введіть тут опис зображення

Термінал cmder у Windows

Тепер виконайте команду, необхідну для налаштувань VM vagrant, для підключення виконайте лише команду vagrant ssh; Дивитися cmder пропонує вбудований ssh-клієнт.

Я сподіваюся, що це допомагає.


0

також зверніть увагу: коли з'являється запит login as: введіть "vagrant" як ім'я користувача (без лапок). - Snorkpete 28 червня 1212 о 14:14

Або ви можете перейти до категорії-> З'єднання-> Rlogin та встановити для поля "Авторизація імені користувача" значення "Вагрант".

Збережіть сеанс.


Краще за все, щоб перевірити подачу , vagrant ssh-configщоб переконатися , що це буде правильне ім'я користувача: на моїй віртуальній машині, Убунту / xenial64, вінubuntu
perlyking

0

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

Щоб встановити, завантажте тільки msysgit зі сторінки проекту msysgit .

І запустити ssh.exeтільки включаємо bin folterв вікно змінних оточення або встановити мерзотник з Git завантаження сторінки і скопіювати msysgit bin folter в C:\Program Files\Git\bin.


0

Додайте до свого рядка такі рядки 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 "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 .

Тепер ви можете 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: '*'

Не працює для мене. Чи потрібен мені пароль під час запуску ssh-keygen?
Пляж Джаред

@JaredBeach Ні, не вводьте парольну фразу під час генерації ключа.
міксель

0

Я також зустрічався з тією ж проблемою і раніше.

  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
  1. Вам потрібно використовувати настільний додаток git bash .

  2. Відкрийте настільний додаток git bash. vagrant up

  3. vagrant ssh


0

Ще одне рішення тут, але тільки для віртуальної коробки Windows 10 для тестування Explorer. ssh користувач: IEUser ssh pass: Passw0rd!


0

Папка встановлення бродячого містить 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 каже, що ваш vm перебуває в режимі poweroffабо в suspendedрежимі, коли ти впевнений, що він насправді працює, щоб змусити SSH з'єднання.

Якщо ви не хочете запам’ятовувати / вводити вищевказану команду, juste запишіть її у vagrant.ps1файл, щоб ви могли виконати її з вашої повноважень за допомогою .\vagrant_ssh.ps1


0

Хорошою альтернативою PuTTY є емулятор терміналу Mintty . Він має більш налаштовані варіанти, ніж PuTTY.


-1

Я думаю, що кращою відповіддю на це питання буде наступна:

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

Ерік написав чудову статтю про те, як перетворити свій комп'ютер з Windows в середовище Linux. Навіть з хаками, щоб змусити Vim працювати на місцях у cmd.

Якщо ви запускаєте цей посібник, який, в основному, дозволяє вам встановити git cli, а також з деякими хаками ви можете вивести командний рядок і ввести vagrant ssh, перебуваючи в папці вашої бродячої скриньки, і він належним чином зробить правильні речі, ні потрібно налаштувати ключі ssh тощо. Все, що постачається з ssh та git cli / bin.

Сила цього полягає в тому, що ви можете фактично запустити паттерн і все-таки отримати все * nix добро. Це дійсно спрощує ваше оточення та допомагає виконувати Vagrant та інші речі.

TL; DR Завантажте Git cli та додайте git / bin до PATH. Hack vim.bat in / bin для роботи з Windows. Використовуйте ssh спочатку в cmd.


Чому за це зараз проголосували? Це розумне рішення, і якщо ви хочете розробити в Windows, це чудовий варіант, набагато краще, ніж злом вашої шпаклівки, злом інших ваших команд.
Марк Лю
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.