SSH Vagrant kutusuna Windows?


172

Vagrant Windows'ta bir VirtualBox VM başlatmak için kullanıyorum. Diğer platformlarda,

$ vagrant ssh

VM'ye bağlanmak için.

Windows'taki bu Vagrant kutusuna nasıl bağlanırım?

Vagrant belgelerinde PuTTy'yi kullanmak için önerilen yol da işe yaramadı:

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


2
Bu konuda büyük bir öğretici, Windows 7
8'de SSH'nin

11
Bu artık bir sorun değil. Yolunuzda ssh.exe varsa (örn. C: \ Program Files \ git \ bin), 'vagrant ssh' çalışır.
Omri Spector

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. , Windows yükleyicisinde ssh Ship ssh.exe'yi varsayılan olarak içermiyor ... beni şaşırttı
KCD

Yanıtlar:


243

Windows7'deki Vagrant kutularıma bağlanmak için PuTTY kullanıyorum.

Emin olun

  • %USERPROFILE%\.vagrant.d\insecure_private_keyPuTTYGen kullanarak .ppk dönüştürmek
  • PuTTY oturumunuzda .ppk anahtarını kullanın - Bağlantı> SSH> Yetkilendirme> Özel anahtar dosyası
  • ana bilgisayarı kullan 127.0.0.1
  • 22 yerine 2222 numaralı bağlantı noktasını kullan
  • varsayılan kullanıcı adını (vagrant) Bağlantı> SSH> Yetkilendirme> Kimlik doğrulama için özel anahtar altında ayarlayabilirsiniz

28
not da: Farklı oturum aç: komut istemi göründüğünde, kullanıcı adı olarak 'vagrant' girin (tırnak işaretleri olmadan).
snorkpete

5
Ve sonra bunu Vagrant'taki her VM için yapın. Vagrant birden fazla VM ile çalışıyor. Bu nedenle, sadece geçici çözümü değil, doğru çözümü kullanın: aşağıda cevabım var. Vagrant küçük yama.
Michael Field

20
Varsayılan kullanıcı adını altında Connection > Data > Auto-login usernameve PPK ayarının altında ayarlayabilirsinizConnection > SSH > Auth > Private key for authentication
Mar14'te

1
Özel anahtarlarınızı parolalarla güven altına almak için yaptığım gibi tercih ederseniz, uzun vadede başlangıçta pageant.exe uygulamasını kullanmak ve ppk dosyanızı yüklemek daha kolay olabilir. Ardından pageante etmek için parolanızı girersiniz ve her seferinde macun terminalinde ppk parolasını belirtmek zorunda kalmadan oturum açabilirsiniz.
Larry Silverman

8
vagrant ssh-configMacun için hangi seçeneklerin verileceğini bilmek için kullanabilirsiniz .
ibizaman

121

Yalnızca bir dosyayı değiştirerek bazı Vagrant kodlarını yamalamanız gerekir ssh.rb.

Tüm bilgiler burada: https://gist.github.com/2843680

vagrant ssh artık Linux'ta olduğu gibi Windows'ta da çalışacak.


EDIT : Daha yeni Sürümlerde bu gereksiz hale geldi. Değişkeninize yolunuzussh.exePATH yine de eklemeniz gerekir :

Bilgisayarınızda ssh.exe dosyasını arayın , Yolu kopyalayın (ie C:\Program Files (x86)\Git\bin), Sistem Tercihleri'ni açın, Ortam değişkeni Ayarlarını bulun , Yol Değişkeni'ne tıklayın, yolu ekleyin, mevcut yolları ayırarak ;.


1
Bu çalışmayı kullanırsanız, Github çekme isteği üzerine yorum yapın, zamanı geldi. github.com/mitchellh/vagrant/pull/933
Cory Dolphin

4
Bu yaklaşık üç ay önce birleştirildi. Kesinlikle 1.2.2 sürümünde mevcuttur.
Johann

Son Vagrant bölgelerinde buna hala ihtiyaç var mı?
Alex

2
@Alex Kesinlikle son Vagrant sürümlerine eklenmiştir. Test ettim ve burada belgeledim
robertpateii

1
Git OpenSSH'nize hızlı bir şekilde yol belirleyin, PowerShell'i açın ve çalıştırın: [Environment]::SetEnvironmentVariable("Path", "$env:Path;c:\Program Files (x86)\Git\bin\", "User")
Janusz Skonieczny

96

Git ikili dosyalarını kullanan başka bir seçenek:

  1. Git'i yükleyin: http://git-scm.com/download/win
  2. Başlat Menüsü> cmd (ÜstKrktr + Enter tuşuna basarak Yönetici olarak gidin)
  3. set PATH=%PATH%;C:\Program Files\Git\usr\bin
  4. vagrant ssh

Bu yardımcı olur umarım :)

Windows'ta bunu kullandıktan aylar sonra sadece bir bonus: Win terminali yerine Konsol kullanın, böylece her zaman PATH seti ile yeni bir terminal sekmesi açabilirsiniz (seçeneklerde yapılandırın)


Birisi bu cevabı iptal etti. Bunu nasıl çalıştığımı anlamaya çalışıyordum, şimdi biliyorum! Teşekkürler
RadiantHex

Bu benim için iyi çalıştı. GIT'e sahip olduğumdan, aynı konsol penceresini yeniden kullanabileceğiniz için Putty'ye geçerek çok daha temiz çalışıyor.
Bartvds

2
Teşekkürler, ama şimdi conemu kullanıyorum . Konsol'dan daha benzer ancak daha esnektir. Ben alliases ve diğer süslü şeyler ile cmd.exe, git bash ve macun gibi birçok konsolları sarma var.
Bartvds

4
Git 2.5.0 için PATH "C: \ Program Files \ Git \ usr \ bin" olmalıdır.
vladimir

1
set PATH =% PATH%; C: \ Program Files \ Git \ usr \ bin Mükemmel çalışıyor! Teşekkürler!
v.babak

72

Macunu İndirin: http://www.chiark.greenend.org.uk/~sgtatham/putty/

Putty.exe kullanma:

Macun GUI'si:

HostName: 127.0.0.1
Port: 2222

Bağladığınızda (Terminal Ekranı):

User: vagrant
Passwd: vagrant

Bağlanmaya çalışmadan önce cmd.exe'yi kullanarak VM'nizi doğrulayın:

 vagrant status

Aşağıdaysa kullanın:

vagrant up

1
Bu, kelimelerde nasıl kaybolmamanızı mükemmel bir şekilde gösterir. Harika, teşekkürler!
appoll

31

Kabul edilen cevap gerçekten yararlıdır, ancak aşağıdaki anahtar yerine şu olabilir:

%USERPROFILE%\.vagrant.d\insecure_private_key

farklı bir anahtarın Putty'nin biçimine dönüştürülmesi gerekir:

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

Putty kullanarak bağlanmak istediğimiz makinenin {vagrant_machine_root}bulunduğu klasör nerede Vagrantfile?

@İbizaman'ın bahsettiği gibi vagrant ssh-config, vagrant tarafından hangi anahtarın kullanıldığını kontrol etmek için:

$ 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 kullanmak istiyorsanız, bu en iyi cevaptır. Doğru özel anahtarı dönüştürmelisiniz. Çok teşekkürler!
johnzachary

1
Değeri kontrol Useretmeniz ve Bağlantı-> Veri-> Otomatik giriş kullanıcı adında Putty'ye sağladığınızdan emin olmanız gerekir. Sanal makinemde adı vardı ubuntuve defalarca oturum açmaya çalışıyordum ve başarısız oldum vagrant.
16:38 de perlyking


6

ya

  1. Sizin de cmdkonsola aşağıdakileri yazın:

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

VEYA

  1. Sisteminizin ortam değişkenlerindeki yolu kalıcı olarak ayarlayın:

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


2

Şimdi ağrısız Vagrant yükseltmesini sağlayan çok daha iyi bir çözümüm var. Yamalı dosyaya dayanır.

Bir vagrant dosyasının ilk satırı şöyle olmalıdır:

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

Ve yamalı vagrantfile_ssh dosyası (başlangıçta ssh.rb olarak adlandırılır) vagrantfile ile aynı dizinde bulunmalıdır . Bu hem zarif hem de işlevsel.

Yamalı vagrantfile_ssh dosyasını indirin .


2
  1. Yükleme Git Bash (OpenSSH'ın ile birlikte gelir, hem de grep, find, perl, sed, vs .;)

    Vagrant yüklüyse, appwiz.cpl(AKA Program Ekle / Kaldır) ve RepairVagrant yüklemesini açın. Bu, vagrant'ın git-bash yolunuza eklenmesini sağlayacaktır.

  2. Git Bash'i açın (Başlat menüsünden)

  3. cd ~/vagrant/mybox vagrant box'es klasörünüze ve vagrant ssh

2

Yukarıda önerildiği gibi yapıyordum ama sadece PATH =% PATH%; "C: \ Program files \ git \ usr \ bin" ile komut satırındaki ortam değişkenini değiştiriyorum

Bu işe yaramadı. Ancak Ortam değişkenini Windows Ayarları aracılığıyla değiştirip yeni bir komut istemi başlattığımda ilk kez çalıştı!



1

Windows 7 (diğer sürümlerde test edilmemiştir)

  1. "Bilgisayarım" üzerine sağ tıklayın ve özellikleri tıklayın
  2. Gelişmiş Sistem Ayarları'na tıklayın
  3. Ortam Değişkenleri'ni tıklayın
  4. "Sistem Değişkenleri" altındaki ikinci kutuda aşağı kaydırın ve "Yol" değişkenini tıklayın ve DÜZENLE'yi tıklayın
  5. Yolun Değişken Değerine eklendiğinden emin olun (orada değilse noktalı virgül ve) C: \ Program Files (x86) \ Git \ bin; (veya ssh.exe'nizin yolu ne olursa olsun)
  6. Tamam> Tamam> Tamam ve Pencereleri Yeniden Kaydet
  7. Vagrant'ı çalıştırmalısın ama bundan sonra vagrant ssh kalıcı olarak çalışmalı

Diğer sürümlerde yardımcı olabilecek daha fazla bilgi ... http://www.computerhope.com/issues/ch000549.htm


1

çok basit, Vagrant yöneticisini ve sanal kutuyu yükledikten sonra, pencerelere cygwin'i yüklemeyi deneyin, ancak cygwin'i yüklerken, makinenizi döndürdükten sonra sisteminizin cygwin'den VM'nize giriş yapmasını sağlayacak SSH paketini, VIM paketini seçtiğinizden emin olun. serseri.


Buradaki en iyi cevap bu. Cygwin, birlikte çalışmanız için bir bash benzeri terminal verecektir. Müthiş!
Neoraptor

1

Windows için emülatör terminal cmder kullanabilirsiniz.

Kurulum için aşağıdaki adımları izleyin:

  1. Erişim cmder.net;
  2. Tam İndirme'yi tıklayın;
  3. halletmek
  4. (isteğe bağlı) PATH'nize enjekte edilecek bin klasörüne kendi yürütülebilir dosyalarınızı yerleştirin.
  5. Cmder'i çalıştırın (Cmder.exe)

resim açıklamasını buraya girin

Windows üzerinde terminal cmder

Şimdi VM vagrant ayarları için gerekli komutu yürütmek, sadece bağlanmak için vagrant ssh komutunu yürütmek; Watch cmder gömülü ssh istemcisi sunuyor.

Umarım bu yardımcı olur.


0

not da: Farklı oturum aç: komut istemi göründüğünde, kullanıcı adı olarak 'vagrant' girin (tırnak işaretleri olmadan). - Snorkpete 28 Haziran 12, 14:14

Veya Kategori-> Bağlantı-> Yeniden giriş'e gidip 'Otomatik giriş kullanıcı adı' alanını 'Vagrant' olarak ayarlayabilirsiniz.

Oturumu kaydedin.


En çıktısını kontrol etmek vagrant ssh-configemin bu hale getirmek için olan benim VY'de, ubuntu / xenial64, bu oldu: Doğru kullanıcı adıubuntu
perlyking

0

Windows 7, 8.1 ve Windows 10 üzerinde vagrant sshkomut kullanıyorum git ssh.

Msysgit proje sayfasından sadece msysgit'i kurmak için .

Ve çalıştırmak için ssh.exeyalnızca dahil bin folterpencere ortam değişkenleri veya gelen budala yüklemek Git Yükleme sayfasına ve kopyalama msysgit bin folter için C:\Program Files\Git\bin.


0

Aşağıdaki satırları ekleyin 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

nerede vagrant_rsave vagrant_rsa.pubgeçerli vagrant proje klasöründe bulunan (ve örneğin tarafından oluşturulan ssh-keygen -t rsa -C "your@email.here") özel ve genel anahtarlar ve 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 kurulum betiğinin basitleştirilmiş sürümüdür .

Şimdi vagrant sshWindows kutusuna girebilirsiniz .

Kullananlar için serseri-libvirt muhtemelen ev sahibinden konuğa RDP gibi bazı portları yönlendirmek istiyorum. vagrant-libvirt port yönlendirme için ssh kullanır, bu nedenle yukarıdaki talimatlarda olduğu gibi Windows'ta ssh kurmanız gerekir ve daha sonra aşağıdaki gibi portları yönlendirebilirsiniz:

config.vm.network :forwarded_port, host: 3389, guest: 3389, id: "rdp", gateway_ports: true, host_ip: '*'

Benim için çalışmıyor. Ssh-keygen çalıştırırken bir parolaya ihtiyacım var mı?
Jared Beach

@JaredBeach Hayır, anahtar oluştururken parola girmeyin.
mixel

0

Daha önce de aynı problemle karşılaştım.

  1. Homestead klasöründe, kullanın bash init.sh.

  2. İçinde .ssh klasörünüz yoksa D:/Users/your username/, bir çift ssh anahtarı almanız gerekir ssh-keygen -t rsa -C "you@homestead".

  3. Düzenle 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. Git bash masaüstü uygulamasını kullanmanız gerekir .

  2. Git bash masaüstü uygulamasını açın. vagrant up

  3. vagrant ssh


0

Burada başka bir çözüm ama sadece sanal 10 windows kutusu için kaşif test etmek. ssh kullanıcısı: IEUser ssh pass: Passw0rd!


0

Vagrant kurulum klasörü, linux üzerinde ssh (1) gibi davranan bir ssh.exe içerir (aynı bayrakları / bağımsız değişkenleri alır).

Kullanılan tüm bağımsız değişkenleri görmek için vagrant ssh-configveyavagrant ssh --debug için daha ayrıntılı bir çıktı için .

Powershell'den:

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"

Bu, ssh bağlantısını zorlamak için vm'nizin gerçekte çalıştığından emin olduğunuzda veya modda vagrant statusolduğunu söyleyen durumlardır .poweroffsuspended

Yukarıdaki komutu hatırlamak / yazmak istemiyorsanız, juste komutunu bir vagrant.ps1dosyaya yazın, böylece kullanarak powershell'inizden çalıştırabilirsiniz. .\vagrant_ssh.ps1



-1

Bu soruya daha iyi bir yanıtın şöyle olacağını düşünüyorum:

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

Eric, Windows bilgisayarınızı bir Linux ortamına nasıl dönüştüreceğiniz hakkında güzel bir makale yazdı. Vim'in cmd cinsinden yerel olarak çalışmasını sağlamak için hack'lerle bile.

Temelde git cli yüklemenizi sağlayan bu kılavuzdan geçerseniz ve bazı hacklerle, vagrant kutunuzun klasöründeyken bir komut istemi getirebilir ve vagrant ssh yazabilirsiniz ve doğru şeyleri doğru bir şekilde yapar, hayır ssh anahtarlarını vb. yapılandırmanız gerekir. Tüm bunlar ssh ve git cli / bin ile birlikte gelir.

Bunun gücü, aslında powershell'i çalıştırıp tüm * nix iyiliğini elde edebilmenizdir. Bu, ortamınızı gerçekten basitleştirir ve Vagrant ve diğer şeyleri çalıştırmaya yardımcı olur.

TL; DR Git cli'yu indirin ve git / bin'i PATH'e ekleyin. Windows için çalışmak için / bin içinde vim.bat'ı kesin. Ssh'yi cmd cinsinden doğal olarak kullanın.


Bu neden şimdi oylandı? Makul bir çözümdür ve Windows'ta dev yapmak istiyorsanız, bu, macununuzu hacklemekten, diğer komutlarınızı hacklemekten çok daha iyi bir seçenektir.
Mark Liu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.