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


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

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 ;.


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)


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

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

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;
    


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 .


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

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!


1

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


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


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.


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.


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.


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.


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 "your@email.here") 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: '*'

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


0

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


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

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


0

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


-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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.