SSH ke kotak Vagrant di Windows?

172

Saya menggunakan Vagrant untuk memulai VM VirtualBox di windows. Di platform lain, saya bisa saja

$ vagrant ssh

untuk terhubung ke VM.

Bagaimana cara saya terhubung ke kotak Vagrant ini di windows?

Cara yang disarankan dalam dokumentasi Vagrant untuk menggunakan Putty juga tidak berfungsi:

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

Sathish
sumber
2
Tutorial besar tentang ini, menampilkan cara SSH ke kotak Vagrant di Windows 7/8
Sliq
11
Ini bukan masalah lagi. Jika Anda memiliki ssh.exe di jalur Anda (mis. C: \ Program Files \ git \ bin), maka 'vagrant ssh' berfungsi.
Omri Spector
1
FYI Vagrant tidak termasuk ssh due to licensing reasons. It seems possible but until a lawyer gives the go-ahead on this, we're not gong to do this. Ship ssh.exe secara default di installer Windows ... itu membingungkan saya
KCD

Jawaban:

243

Saya menggunakan Putty untuk terhubung ke kotak Vagrant saya di Windows7.

Pastikan Anda

  • konversikan %USERPROFILE%\.vagrant.d\insecure_private_keyke .ppk menggunakan PuTTYGen
  • gunakan kunci .ppk di sesi Putty Anda - dikonfigurasi dalam Koneksi> SSH> Auth> File kunci pribadi
  • gunakan host 127.0.0.1
  • gunakan port 2222 bukan 22
  • Anda dapat mengatur nama pengguna default (gelandangan) di bawah Koneksi> SSH> Auth> Kunci pribadi untuk otentikasi
Dror Bereznitsky
sumber
28
perhatikan juga: ketika login sebagai: prompt muncul, masukkan 'gelandangan' sebagai nama pengguna (tanpa tanda kutip).
snorkpete
5
Dan kemudian lakukan itu untuk setiap VM di Vagrant. Anda tahu, Vagrant bekerja dengan banyak VM. Jadi, gunakan saja solusi yang tepat, bukan solusi: ada jawaban saya di bawah ini. Tambalan kecil di Vagrant.
Michael Field
20
Anda dapat mengatur nama pengguna default di bawah Connection > Data > Auto-login usernamedan pengaturan PPK di bawahConnection > SSH > Auth > Private key for authentication
mpen
1
Jika Anda lebih suka seperti yang saya lakukan untuk mengamankan kunci pribadi Anda dengan kata sandi, mungkin dalam jangka panjang akan lebih mudah untuk menggunakan aplikasi pageant.exe saat startup, memuat file ppk Anda ke dalamnya. Kemudian Anda memasukkan kata sandi Anda ke kontes sekali, dan Anda dapat masuk tanpa harus menentukan kata sandi ppk di terminal dempul setiap waktu.
Larry Silverman
8
Anda bisa menggunakannya vagrant ssh-configuntuk mengetahui opsi apa yang akan diberikan kepada dempul.
ibizaman
121

Anda harus menambal beberapa kode Vagrant dengan memodifikasi hanya satu file ssh.rb,.

Semua info ada di sini: https://gist.github.com/2843680

vagrant ssh sekarang akan berfungsi juga di Windows, sama seperti di Linux.


EDIT : Dalam Versi yang lebih baru ini menjadi tidak perlu. Anda masih harus menambahkan path ke variabel ssh.exeAnda kePATH :

Cari ssh.exe di komputer Anda, salin Path (yaitu C:\Program Files (x86)\Git\bin), buka System Preferences, temukan Pengaturan variabel Environment , klik pada Path Variable, tambahkan path, pisahkan path yang ada menggunakan ;.

Michael Field
sumber
1
Silakan mengomentari permintaan tarik Github untuk masalah ini jika Anda menggunakan pekerjaan ini, sudah saatnya digabung. github.com/mitchellh/vagrant/pull/933
Cory Dolphin
4
Ini tampaknya telah digabung sekitar tiga bulan lalu. Itu pasti ada di versi 1.2.2.
Johann
Apakah ini masih diperlukan atau ditambal di distrik Vagrant baru-baru ini?
Alex
2
@Alex Ini pasti ditambal ke versi Vagrant terbaru. Saya mengujinya dan mendokumentasikannya di sini: robertpate.net/blog/2013/…
robertpateii
1
Dengan cepat atur path ke OpenSSH git Anda, buka PowerShell dan jalankan: [Environment]::SetEnvironmentVariable("Path", "$env:Path;c:\Program Files (x86)\Git\bin\", "User")
Janusz Skonieczny
96

Opsi lain menggunakan binari git:

  1. Instal git: http://git-scm.com/download/win
  2. Start Menu> cmd (shift + enter untuk pergi sebagai Administrator)
  3. set PATH=%PATH%;C:\Program Files\Git\usr\bin
  4. vagrant ssh

Semoga ini membantu :)

Hanya bonus setelah berbulan-bulan menggunakannya di Windows: gunakan Konsol alih-alih terminal Win, jadi Anda selalu dapat membuka tab terminal baru dengan set PATH (konfigurasikan pada opsi)

gabrielhpugliese
sumber
Seseorang memvoting jawaban ini. Sedang berusaha mencari tahu bagaimana saya bisa bekerja ini, sekarang saya tahu! Terima kasih
RadiantHex
Ini bekerja dengan baik untuk saya. Seperti yang saya miliki GIT itu bekerja jauh lebih bersih kemudian beralih ke Putty karena Anda bisa menggunakan kembali jendela konsol yang sama.
Bartvds
2
Terima kasih, tetapi sekarang saya menggunakan conemu . Ini serupa tetapi lebih fleksibel daripada Konsol. Saya memilikinya membungkus banyak konsol, seperti cmd.exe, bash git dan dempul dengan alliases dan hal-hal mewah lainnya.
Bartvds
4
untuk Git 2.5.0 PATH harus "C: \ Program Files \ Git \ usr \ bin".
vladimir
1
set PATH =% PATH%; C: \ Program Files \ Git \ usr \ bin Bekerja sempurna! Terima kasih!
v.babak
72

Unduh Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/

Menggunakan putty.exe:

GUI dempul:

HostName: 127.0.0.1
Port: 2222

Saat Anda terhubung (Layar Terminal):

User: vagrant
Passwd: vagrant

Sebelum Anda mencoba menghubungkan, verifikasi VM Anda menggunakan cmd.exe:

 vagrant status

Jika tidak digunakan:

vagrant up
Rafael Gorski
sumber
1
Ini menunjukkan dengan sempurna bagaimana tidak tersesat dalam kata-kata. Luar biasa, terima kasih!
appoll
31

The jawaban yang diterima benar-benar membantu namun mungkin terjadi bahwa bukan kunci berikut:

%USERPROFILE%\.vagrant.d\insecure_private_key

kunci yang berbeda harus dikonversi ke format Putty:

{vagrant_machine_root}/.vagrant/machines/default/virtualbox/private_key

Di mana {vagrant_machine_root}ada folder dengan Vagrantfilemesin yang ingin kita hubungkan menggunakan Putty.

Seperti @ibizaman disebutkan digunakan vagrant ssh-configuntuk memeriksa kunci apa yang digunakan oleh gelandangan:

$ 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
begie
sumber
4
Jika Anda ingin menggunakan Putty, maka ini adalah jawaban terbaik. Anda harus mengonversi kunci pribadi yang benar. Terimakasih banyak!
johnzachary
1
Layak disebutkan bahwa Anda harus memeriksa Usernilainya dan pastikan Anda menyediakannya ke Putty di Connection-> Data-> Auto-login username. Di VM saya namanya ubuntudan saya telah berulang kali mencoba, dan gagal, untuk masuk sebagai vagrant.
memeriksa
6

Antara

  1. cmdKetik konsol Anda yang berikut ini:

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

ATAU

  1. Setel path secara permanen dalam variabel lingkungan sistem Anda:

    C:\Program Files (x86)\Git\bin;
    
Kripa Jayakumar
sumber
4

Ada paket OpenSSH untuk Windows yang pada dasarnya adalah Cygwin yang dipreteli. Memiliki msi-Installer dan (setelah mengatur jalur Anda yang sesuai) bekerja dengan "vsagrant ssh":

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

Christian Waidner
sumber
Sejauh ini, ini adalah solusi terbaik bagi saya. Tautan yang Anda berikan belum diperbarui sejak 2010. Ada versi yang lebih baru tersedia di mls-software.com/opensshd.html
icc97
2

Sekarang saya memiliki solusi yang lebih baik yang memungkinkan peningkatan Vagrant tanpa rasa sakit. Ini didasarkan pada file yang ditambal.

Baris pertama dari vagrantfile adalah:

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

Dan file vagrantfile_ssh yang ditambal (aslinya bernama ssh.rb ) harus ada di direktori yang sama dengan vagrantfile . Ini elegan dan fungsional.

Unduh vagrantfile_ssh yang ditambal .

Michael Field
sumber
2
  1. Instal Git Bash (Dilengkapi dengan OpenSSH, serta grep, find, perl, sed, dll .;)

    Jika Anda menginstal Vagrant, buka appwiz.cpl(AKA Add / Remove Programs) dan Repairinstalasi Vagrant. Ini akan membuat gelandangan menambahkan dirinya ke jalur git-bash Anda.

  2. Buka Git Bash (Melalui menu mulai)

  3. cd ~/vagrant/mybox ke folder kotak gelandangan Anda dan vagrant ssh
ThorSummoner
sumber
2

Saya melakukan seperti yang disarankan di atas tetapi mengubah variabel lingkungan pada baris perintah hanya dengan PATH =% PATH%; "C: \ Program files \ git \ usr \ bin"

Ini tidak berhasil. Tetapi ketika saya mengubah variabel Lingkungan melalui Pengaturan Windows dan kemudian memulai prompt perintah baru itu berhasil pertama kali!

Paul Pritchard
sumber
1

Secara pribadi, saya hanya menggunakan Cygwin . Yang memungkinkan Anda untuk menggunakan banyak perintah * nix umum di Windows. SSH menjadi salah satu dari mereka.

Kiksy
sumber
Anda perlu mengubah PATH Anda untuk memasukkan direktori tempat penyimpanan Cygwin, sepertiset PATH=%PATH%;c:\cygwin\bin
David Soroko
1

Windows 7 (tidak diuji pada versi lain)

  1. Klik kanan pada "My Computer" dan klik properties
  2. Klik Pengaturan Sistem Lanjut
  3. Klik Variabel Lingkungan
  4. Di kotak kedua di bawah "System Variables" gulir ke bawah dan klik pada variabel "Path" dan klik EDIT
  5. Pastikan path dimasukkan dalam Nilai Variabel dengan menambahkan (tanda titik koma jika tidak ada di sana dan) C: \ Program Files (x86) \ Git \ bin; (atau apa pun jalan menuju ssh.exe Anda)
  6. OK> OK> OK dan RESTART WINDOWS
  7. Anda harus menjalankan gelandangan tetapi setelah itu gelandangan ssh harus bekerja secara permanen

Info lebih lanjut yang mungkin membantu dengan versi lain ... http://www.computerhope.com/issues/ch000549.htm

byronyasgur
sumber
1

sangat sederhana, setelah Anda menginstal Vagrant manager dan kotak virtual, coba instal cygwin di windows tetapi saat menginstal cygwin, pastikan untuk memilih paket SSH, paket VIM yang akan memungkinkan sistem Anda untuk login ke VM Anda dari cygwin setelah memutar mesin Anda melalui gelandangan.

Prashanth
sumber
Ini jawaban terbaik di sini. Cygwin akan memberi Anda bash like terminal untuk bekerja dengannya. Luar biasa!
Neoraptor
1

Anda dapat menggunakan cmder terminal emulator untuk windows.

Ikuti langkah-langkah untuk instalasi:

  1. Akses cmder.net;
  2. Klik Unduh Penuh;
  3. Unzip
  4. (opsional) Tempatkan file Anda yang dapat dieksekusi sendiri ke folder bin untuk disuntikkan ke PATH Anda.
  5. Jalankan Cmder (Cmder.exe)

masukkan deskripsi gambar di sini

Terminal cmder di Windows

Sekarang jalankan perintah yang diperlukan untuk pengaturan VM vagrant, untuk terhubung hanya jalankan perintah vagrant ssh; Watch cmder menawarkan ssh client tertanam.

Saya harap ini membantu.

Wanderson Leandro de Oliveira
sumber
0

perhatikan juga: ketika login sebagai: prompt muncul, masukkan 'gelandangan' sebagai nama pengguna (tanpa tanda kutip). - Snorkpete 28 Jun '12 pada 14:14

Atau Anda dapat pergi ke Category-> Connection-> Rlogin dan setel bidang 'Nama pengguna login otomatis' menjadi 'Vagrant'.

Simpan sesi.

Algoritma Buruk
sumber
Terbaik untuk memeriksa output vagrant ssh-configuntuk memastikan ini adalah nama pengguna yang benar: pada VM saya, ubuntu / xenial64, ituubuntu
perlyking
0

Saya menggunakan vagrant sshperintah dengan git sshdi windows 7, 8.1 dan Windows 10.

Untuk menginstal hanya unduh msysgit dari halaman proyek msysgit .

Dan untuk menjalankan ssh.exehanya menyertakan bin foltervariabel lingkungan ke windows atau menginstal git dari halaman Unduhan Git dan salin msysgit bin folter ke C:\Program Files\Git\bin.

Rudy Alcivar
sumber
0

Tambahkan baris berikut ke 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

di mana vagrant_rsadan vagrant_rsa.pubkunci pribadi dan publik terletak di folder proyek gelandangan saat ini (dan dihasilkan misalnya oleh ssh-keygen -t rsa -C "[email protected]") dan openssh.ps1adalah:

$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"

yang merupakan versi sederhana dari skrip setup openssh joefitzgerald / packer-windows .

Sekarang Anda dapat vagrant sshmasuk ke kotak Windows.

Bagi mereka yang menggunakan libvirtual Anda mungkin ingin meneruskan beberapa port seperti RDP dari host ke guest. vagrant-libvirt menggunakan ssh untuk penerusan port sehingga Anda perlu mengatur ssh pada Windows seperti dalam instruksi di atas dan kemudian Anda akan dapat meneruskan port seperti:

config.vm.network :forwarded_port, host: 3389, guest: 3389, id: "rdp", gateway_ports: true, host_ip: '*'
mixel
sumber
Tidak bekerja untukku. Apakah saya perlu kata sandi saat menjalankan ssh-keygen?
Pantai Jared
@ JaredBeach Tidak, jangan masukkan frasa sandi saat membuat kunci.
mixel
0

Saya juga menemui masalah yang sama sebelumnya.

  1. Di folder homestead, gunakan bash init.sh.

  2. Jika Anda tidak memiliki folder .ssh D:/Users/your username/, Anda perlu mendapatkan sepasang kunci ssh ssh-keygen -t rsa -C "you@homestead",.

  3. Edit Homestead.yaml (homestead /) 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. Anda perlu menggunakan aplikasi desktop git bash .

  2. Buka aplikasi desktop git bash. vagrant up

  3. vagrant ssh

JKol
sumber
0

Solusi lain di sini tetapi hanya untuk kotak virtual windows 10 untuk menguji explorer. ssh user: IEUser ssh pass: Passw0rd!

Gustavo
sumber
0

Folder instalasi gelandangan berisi ssh.exe yang berperilaku seperti ssh (1) di linux (mengambil flag / argumen yang sama).

Untuk melihat semua argumen yang digunakan, Anda dapat menjalankan vagrant ssh-configatau vagrant ssh --debuguntuk keluaran yang lebih bertele-tele.

dari 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"

Ini berguna adalah situasi di mana vagrant statusmengatakan vm Anda dalam poweroffatau suspendedmode ketika Anda yakin itu benar-benar berjalan, untuk memaksa koneksi ssh.

Jika Anda tidak ingin mengingat / mengetik perintah di atas, cukup tulis saja dalam vagrant.ps1file sehingga Anda dapat menjalankannya dari PowerShell Anda menggunakan .\vagrant_ssh.ps1

rxdazn
sumber
0

Alternatif yang baik untuk Putty adalah emulator terminal Mintty . Ini memiliki opsi lebih dapat dikonfigurasi daripada Putty.

yvoloshin
sumber
-1

Saya pikir jawaban yang lebih baik untuk pertanyaan ini adalah sebagai berikut:

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

Eric menulis artikel yang bagus tentang cara mengubah komputer windows Anda menjadi lingkungan Linux. Bahkan dengan peretasan untuk membuat Vim bekerja secara native di cmd.

Jika Anda menjalankan panduan ini, yang pada dasarnya membuat Anda menginstal git cli, dan dengan beberapa peretasan, Anda dapat memunculkan prompt perintah dan mengetikkan vagrant ssh di folder kotak gelandangan Anda dan itu akan melakukan hal yang benar, tidak perlu mengkonfigurasi kunci ssh dll. Semua yang datang dengan ssh dan git cli / bin.

Kekuatan ini adalah bahwa Anda kemudian dapat benar-benar menjalankan PowerShell dan masih mendapatkan semua kebaikan * nix. Ini sangat menyederhanakan lingkungan Anda dan membantu menjalankan Vagrant dan hal-hal lain.

TL; DR Unduh Git cli dan tambahkan git / bin ke PATH. Retas vim.bat di / bin agar berfungsi untuk windows. Gunakan ssh secara asli dalam cmd.

Mark Liu
sumber
Mengapa ini dipilih sekarang? Ini adalah solusi yang masuk akal dan jika Anda ingin dev di Windows, ini adalah pilihan bagus, jauh lebih baik daripada meretas dempul Anda, meretas perintah Anda yang lain.
Mark Liu