SSH til Vagrant boks i Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger Vagrant til at starte en VirtualBox VM i Windows.
I andre platforme kan jeg bare


$ vagrant ssh


at oprette forbindelse til VM.


Hvordan kan jeg oprette forbindelse til denne Vagrant-boks i Windows?


Den måde, som blev foreslået i Vagrant-dokumentationen til at bruge PuTTy, fungerede også ikke:


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

Bedste reference


Jeg bruger PuTTY til at oprette forbindelse til mine Vagrant-bokse på Windows7.


Vær sikker på at du



  • konverter \%USERPROFILE\%.vagrant.dinsecure\_private\_key til .ppk ved hjælp af PuTTYGen

  • brug .ppk-tasten i din PuTTY-session - konfigureret i forbindelse> SSH> Auth> Privat nøglefil

  • brug værten 127.0.0.1

  • brug port 2222 i stedet for 22

  • Du kan angive standardbrugernavnet (vagrant) under Forbindelse> SSH> Auth> Privat nøgle til godkendelse


Andre referencer 1


Du skal patch nogle Vagrant-kode ved at ændre kun en fil, ssh.rb. [65]


Alle oplysninger er her: https://gist.github.com/2843680[66]


vagrant ssh vil nu også fungere i Windows, ligesom i Linux.





REDIGER : I nyere versioner blev det unødvendigt. Du skal stadig tilføje stien til din ssh.exe til din PATH variabel: [67]


Søg efter ssh.exe på din computer, kopier stien (dvs. C:Program Files (x86)Gitin), åbn Systemindstillinger, find Miljøvariabel Indstillinger, klik på sti variabel , tilføj stien, adskille de eksisterende stier ved hjælp af ;.

Andre referencer 2


En anden mulighed ved hjælp af git binaries:



  1. Installer git: http://git-scm.com/download/win

  2. Start menu> cmd (skift + indtast for at gå som administrator)

  3. set PATH=\%PATH\%;C:Program FilesGitusrin

  4. vagrant ssh



Håber det hjælper:) [68]


Bare en bonus efter måneder med at bruge det på Windows: Brug Console i stedet for Win-terminalen, så du kan altid åbne en ny terminalfan med PATH-sæt (konfigurere det på muligheder) [69]

Andre referencer 3


Download Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/[70]


Brug putty.exe:


Putty GUI:


HostName: 127.0.0.1
Port: 2222


Når du tilslutter (Terminal Screen):


User: vagrant
Passwd: vagrant


Før du forsøger at oprette forbindelse, skal du bekræfte din VM ved hjælp af cmd.exe:


 vagrant status


Hvis det ikke er brugt:


vagrant up

Andre referencer 4


Det accepterede svar er virkelig nyttigt, men det kan ske, at i stedet for følgende nøgle:


\%USERPROFILE\%.vagrant.dinsecure\_private\_key


en anden nøgle skal konverteres til Putty's format:


{vagrant\_machine\_root}/.vagrant/machines/default/virtualbox/private\_key


Hvor {vagrant\_machine\_root} er en mappe med maskinens Vagrantfile, vil vi forbinde til brug af Putty.


Som @ibizaman nævnt brug vagrant ssh-config for at kontrollere, hvilken nøgle der bruges af 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

Andre referencer 5


Nu kan du også bruge følgende plugin til at forbinde med kitt:


https://github.com/nickryand/vagrant-multi-putty[72]


Bare udfør


vagrant plugin installere vagrant-multi-putty


og sørg for putty.exe og puttygen.exe er i din PATH


Så vil du kunne bruge


vagrant kittet


De ovennævnte kørsler er tilgængelige fra:


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

Andre referencer 6


Enten



  1. Skriv i din cmd konsol følgende:


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



eller



  1. Indstil stien i systemets miljøvariabler permanent:


    C:Program Files (x86)Gitin;
    


Andre referencer 7


Der er en OpenSSH-pakke til Windows, som i grunden er en strippet ned Cygwin. Den har en msi-Installer og (efter at have indstillet din sti i overensstemmelse hermed) fungerer med 'vsagrant ssh':


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

Andre referencer 8


Nu har jeg en meget bedre løsning, der muliggør smertefri Vagrant-opgradering.
Den er baseret på patched fil.


Den første linje af en vagrantfil skal være:


load "vagrantfile\_ssh" if Vagrant::Util::Platform.windows?


Og den patcherede vagrantfile\_ssh -fil (originaly hedder ssh.rb ) skal findes i samme mappe som vagrantfile . Dette er både elegant og funktionelt.


Download den patched vagrantfile\_ssh. [75]

Andre referencer 9


Personligt bruger jeg bare Cygwin. Hvilket giver dig mulighed for at bruge mange almindelige * nix-kommandoer i Windows. SSH er en af ​​dem. [76]

Andre referencer 10



  1. Installer Git Bash (Leveres med OpenSSH, samt grep, find, perl, sed osv.;) [77]


    Hvis du har installeret Vagrant, skal du åbne appwiz.cpl (AKA Tilføj/fjern programmer) og Reparere Vagrant installationen. Dette vil gøre vagrant tilføje sig til din git-bash sti.

  2. Åbn Git Bash (via startmenuen)

  3. cd ~/vagrant/mybox til din vagrant box 'es mappe og vagrant ssh


Andre referencer 11


Jeg gjorde som foreslået ovenfor, men ændrede miljøvariablen kun på kommandolinjen med PATH =\% PATH\%; 'C: \ Programfiler \ git \ usr \ bin'


Dette fungerede ikke. Men da jeg ændrede miljøvariablen via Windows Settings og derefter startede en ny kommandoprompt, fungerede det første gang!

Andre referencer 12


Windows 7 (ikke testet på andre versioner)



  1. Højreklik på 'Denne computer' og klik på egenskaber

  2. Klik på Avancerede systemindstillinger

  3. Klik på miljøvariabler

  4. I anden boks under 'Systemvariabler' rul ned og klik på variabel 'Sti' og klik på EDIT

  5. Kontroller, at stien er inkluderet i variabelværdien ved at tilføje (et semikolon, hvis det ikke er der og) C: \ Programmer (x86) \ Git \ bin; (eller hvad der end er stien til din ssh.exe)

  6. OK> OK> OK og RESTART WINDOWS

  7. Du skal løbe vagrant op, men efter at vagrant ssh skal arbejde permanent



Flere oplysninger, som kan hjælpe med andre versioner ... http://www.computerhope.com/issues/ch000549.htm[78]

Andre referencer 13


meget simpelt, når du installerer Vagrant-manager og virtuel boks, skal du prøve at installere cygwin på windows, mens du installerer cygwin, skal du sørge for at vælge SSH-pakken, VIM-pakken, som gør det muligt for dit system at logge ind på din VM fra cygwin efter at du har spredt din maskine gennem vagabond.

Andre referencer 14



  

    

      Bemærk også: Når login som: prompt vises, skal du indtaste 'vagrant' som brugernavn (uden citater). - Snorkpete Jun 28 '12 kl 14:14

    

  



Eller du kan gå til Kategori-> Forbindelse-> Rlogin og sæt feltet 'Automatisk login' til 'Vagrant'.


Gem sessionen.

Andre referencer 15


Jeg bruger vagrant ssh kommandoen med git ssh på Windows 7, 8.1 og Windows 10.


For kun at installere download msysgit fra msysgit projekt side. [79]


Og for at køre ssh.exe, skal du kun inkludere bin folter til Windows-miljøvariablerne eller installere git fra Git Download-siden og kopiere msysgit bin folter til C:Program FilesGitin. [80]

Andre referencer 16


Tilføj følgende linjer til din 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


hvor vagrant\_rsa og vagrant\_rsa.pub er de private og offentlige nøgler placeret i den nuværende vagrant-projektmappe (og genereret fx af ssh-keygen -t rsa -C "your@email.here") og openssh.ps1 er:


$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 FilesOpenSSHinssh.exe")) {
    Write-Output "Downloading $ssh\_download\_url"
    (New-Object System.Net.WebClient).DownloadFile($ssh\_download\_url, "C:WindowsTempopenssh.exe")

    Start-Process "C:WindowsTempopenssh.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:Usersvagrant.ssh"
C:WindowsSystem32icacls.exe "C:Usersvagrant" /grant "vagrant:(OI)(CI)F"
C:WindowsSystem32icacls.exe "C:Program FilesOpenSSHin" /grant "vagrant:(OI)RX"
C:WindowsSystem32icacls.exe "C:Program FilesOpenSSHusrsbin" /grant "vagrant:(OI)RX"

Write-Output "Setting SSH home directories"
    (Get-Content "C:Program FilesOpenSSHetcpasswd") |
    Foreach-Object { $\_ -replace '/home/(w+)', '/cygdrive/c/Users/$1' } |
    Set-Content 'C:Program FilesOpenSSHetcpasswd'

# Set shell to /bin/sh to return exit status
$passwd\_file = Get-Content 'C:Program FilesOpenSSHetcpasswd'
$passwd\_file = $passwd\_file -replace '/bin/bash', '/bin/sh'
Set-Content 'C:Program FilesOpenSSHetcpasswd' $passwd\_file

# fix opensshd to not be strict
Write-Output "Setting OpenSSH to be non-strict"
$sshd\_config = Get-Content "C:Program FilesOpenSSHetcsshd\_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 FilesOpenSSHetcsshd\_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 FilesOpenSSHetcssh\_host\_ed25519\_key"
Remove-Item -Force -ErrorAction SilentlyContinue "C:Program FilesOpenSSHetcssh\_host\_ed25519\_key.pub"

# use c:WindowsTemp as /tmp location
Write-Output "Setting temp directory location"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "C:Program FilesOpenSSH	mp"
C:Program` FilesOpenSSHinjunction.exe /accepteula "C:Program FilesOpenSSH	mp" "C:WindowsTemp"
C:WindowsSystem32icacls.exe "C:WindowsTemp" /grant "vagrant:(OI)(CI)F"

# add 64 bit environment variables missing from SSH
Write-Output "Setting SSH environment"
$sshenv = "TEMP=C:WindowsTemp"
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 FilesCommon Files"
    $sshenv = $sshenv + "`r`n" + ($env\_vars -join "`r`n")
}
Set-Content C:Usersvagrant.sshenvironment $sshenv

# record the path for provisioners (without the newline)
Write-Output "Recording PATH for provisioners"
Set-Content C:WindowsTempPATH ([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 FilesOpenSSHusrsbinsshd.exe" enable=yes
netsh advfirewall firewall add rule name="ssh" dir=in action=allow protocol=TCP localport=22

Start-Service "OpenSSHd"


som er forenklet version af joefitzgerald/packer-windows openssh setup script. [81]


Nu kan du vagrant ssh ind i Windows-boksen.


For dem, der bruger vagrant-libvirt, vil du muligvis videresende nogle havne som RDP fra vært til gæst. vagrant-libvirt bruger ssh til port forwarding, så du skal konfigurere ssh på Windows som i ovenstående instruktioner og så vil du kunne sende porte som: [82] [83]


config.vm.network :forwarded\_port, host: 3389, guest: 3389, id: "rdp", gateway\_ports: true, host\_ip: '*'

Andre referencer 17


Jeg mødte også det samme problem før.



  1. Brug mappen bash init.sh i homestead-mappen.

  2. Hvis du ikke har .ssh mappe i D:/Users/your username/, skal du have et par ssh nøgler, ssh-keygen -t rsa -C "you@homestead".

  3. Rediger 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. Du skal bruge git bash desktop app. [84]

  2. Åbn git bash desktop app. vagrant up

  3. vagrant ssh


Andre referencer 18


En anden løsning her, men kun til den virtuelle boks i Windows 10 for at teste explorer.
ssh bruger: IEUser
ssh pass: Passw0rd!

Andre referencer 19


Vagrant-installationsmappen indeholder en ssh.exe, der opfører sig som ssh (1) på linux (tager de samme flag/argumenter).


For at se alle de anvendte argumenter kan du køre vagrant ssh-config eller vagrant ssh --debug for en mere verbos output.


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


Dette er nyttigt er situationer hvor vagrant status siger, at din vm er i poweroff eller suspended -tilstanden, når du er positiv, det rent faktisk kører, for at tvinge ssh-forbindelse.


Hvis du ikke vil huske/skriv ovenstående kommando, skal du skrive det i en vagrant.ps1 fil, så du kan udføre den fra din powerhell ved at bruge
 .vagrant\_ssh.ps1

Andre referencer 20


du kan bruge emulator terminal cmder til vinduer.


Følg nedenstående trin for installation:



  1. Få adgang til cmder.net;

  2. Klik på Download Full;

  3. Unzip

  4. (valgfrit) Placer dine egne eksekverbare filer i den mappe, der skal indsprøjtes i din PATH.

  5. Kør Cmder (Cmder.exe)



Indtast billedbeskrivelse her


Terminal cmder på Windows


Udfør nu kommando, der kræves for indstillinger VM vagrant, for kun tilslut køre kommandoen vagrant ssh;
Watch cmder tilbyder ssh klient indlejret.


Jeg håber det hjælper.

Andre referencer 21


Jeg tror, ​​at et bedre svar på dette spørgsmål ville være følgende:


https://eamann.com/tech/linux-flavored-windows/[85]


Eric skrev en god artikel om, hvordan man kan omdanne din Windows-computer til et Linux-miljø. Selv med hacks for at få Vim til at arbejde indbygget i cmd.


Hvis du løber igennem denne vejledning, som i grunden får dig til at installere git cli, og med nogle hackere, kan du hente en kommandoprompt og skrive vagrant ssh, mens du er i mappen på din vagrantboks, og det vil korrekt gøre de rigtige ting, nej skal konfigurere ssh nøgler osv. Alt der følger med ssh og git cli/bin.


Kraften i dette er, at du så rent faktisk kan køre powerhell og stadig få alle * nix godhed. Dette forenkler virkelig dit miljø og hjælper med at køre Vagrant og andre ting.


TL; DR Download Git cli og tilføj git/bin til PATH. Hack vim.bat i/bin til arbejde for windows. Brug ssh indbygget i cmd.