it-swarm.com.de

SSH zu Vagrant Box in Windows?

Ich benutze Vagrant, um eine VirtualBox VM in Windows zu starten. Auf anderen Plattformen kann ich das einfach

$ vagrant ssh

um sich mit der VM zu verbinden.

Wie verbinde ich mich mit dieser Vagrant-Box in Windows?

Der in der Vagrant-Dokumentation vorgeschlagene Weg zur Verwendung von PuTTY funktionierte ebenfalls nicht:

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

170
Sathish

Ich verwende PuTTY, um eine Verbindung zu meinen Vagrant-Boxen unter Windows7 herzustellen.

Stell sicher, dass du

  • konvertieren Sie den %USERPROFILE%\.vagrant.d\insecure_private_key in .ppk mit PuTTYGen
  • verwenden Sie den PPK-Schlüssel in Ihrer PuTTY-Sitzung - konfiguriert in Connection> SSH> Auth> Private Key-Datei
  • benutze Host 127.0.0.1
  • verwenden Sie Port 2222 anstelle von 22
  • sie können den Standardbenutzernamen (vagrant) unter Verbindung> SSH> Auth> Privater Schlüssel für die Authentifizierung festlegen
238

Sie müssen patch etwas Vagrant-Code eingeben, indem Sie nur eine Datei ssh.rb ändern.

Alle Informationen finden Sie hier: https://Gist.github.com/2843680

vagrant ssh funktioniert jetzt auch in Windows, genau wie in Linux.


EDIT: In neueren Versionen wurde dies unnötig. Sie müssen noch den Pfad zu Ihrem ssh.exe zu Ihrer PATH-Variable hinzufügen

Suchen Sie nach ssh.exe auf Ihrem Computer, kopieren Sie den Pfad (dh C:\Program Files (x86)\Git\bin), öffnen Sie die Systemeinstellungen, suchen Sie die Umgebungsvariable Einstellungen, klicken Sie auf die Pfadvariable, fügen Sie den Pfad ein und trennen Sie den vorhandenen Pfad Pfade mit ;.

120
Michael Field

Eine weitere Option mit Git-Binärdateien:

  1. Installieren Sie git: http://git-scm.com/download/win
  2. Startmenü> cmd (Umschalt + Eingabe, um als Administrator zu gelangen)
  3. set PATH=%PATH%;C:\Program Files\Git\usr\bin
  4. vagrant ssh

Hoffe das hilft :)

Nur ein Bonus nach Monaten unter Verwendung von Windows: Verwenden Sie Console anstelle des Win-Terminals, sodass Sie immer ein neues Terminal-Register mit PATH-Set öffnen können (konfigurieren Sie es unter Optionen).

95

Laden Sie PuTTY herunter: http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/

PuTTY.exe verwenden:

PuTTY GUI:

HostName: 127.0.0.1
Port: 2222

Wenn Sie eine Verbindung herstellen (Terminal-Bildschirm):

User: vagrant
Passwd: vagrant

Bevor Sie versuchen, eine Verbindung herzustellen, überprüfen Sie Ihre VM mithilfe von cmd.exe:

 vagrant status

Wenn es nicht verfügbar ist:

vagrant up
72
Rafael Gorski

Die akzeptierte Antwort ist wirklich hilfreich, jedoch kann es passieren, dass anstelle des folgenden Schlüssels:

%USERPROFILE%\.vagrant.d\insecure_private_key

ein anderer Schlüssel muss in das PuTTY-Format konvertiert werden:

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

Dabei ist {vagrant_machine_root} ein Ordner mit der Vagrantfile des Rechners, zu dem Sie sich mit PuTTY verbinden möchten.

Als @ibizaman erwähnt, vagrant ssh-config verwenden, um zu prüfen, welcher Schlüssel von Vagrant verwendet wird:

$ 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
27
begie

Jetzt können Sie auch das folgende Plugin verwenden, um sich mit PuTTY zu verbinden:

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

Einfach ausführen 

vagrant plugin install vagrant-multi-PuTTY

und stellen Sie sicher, dass sich PuTTY.exe und puttygen.exe in Ihrem PFAD befinden 

Dann können Sie verwenden 

vagabund PuTTY 

Die oben genannten ausführbaren Dateien sind erhältlich bei: 

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

12
camilohe

Entweder

  1. Geben Sie in Ihre cmd-Konsole Folgendes ein:

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

ODER

  1. Legen Sie den Pfad dauerhaft in den Umgebungsvariablen Ihres Systems fest:

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

Es gibt ein OpenSSH-Paket für Windows, bei dem es sich im Grunde um einen abgespeckten Cygwin handelt. Es hat einen msi-Installer und funktioniert (nachdem Sie Ihren Pfad entsprechend gesetzt haben) mit "vsagrant ssh":

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

4

Ich persönlich verwende einfach Cygwin . Damit können Sie viele allgemeine * nix-Befehle in Windows verwenden. SSH ist einer von ihnen.

2
Kiksy

Ich tat wie oben beschrieben, aber die Umgebungsvariable in der Befehlszeile wurde nur mit PATH =% PATH%; "C:\Programme\git\usr\bin" geändert.

Das hat nicht funktioniert. Aber als ich die Umgebungsvariable über die Windows-Einstellungen geändert und dann einen neuen Befehl Prompt gestartet hatte, funktionierte es beim ersten Mal!

2
Paul Pritchard
  1. Install Git Bash (Kommt mit OpenSSH sowie mit grep, find, Perl, sed, etc .;)

    Wenn Sie Vagrant installiert haben, öffnen Sie appwiz.cpl (AKA Add/Remove Programs) und Repair die Vagrant-Installation. Dadurch fügt sich der Landstreicher in Ihren Pfad ein.

  2. Öffnen Sie Git Bash (über das Startmenü)

  3. cd ~/vagrant/mybox in den Ordner Ihrer Vagrant Box und vagrant ssh
2
ThorSummoner

Jetzt habe ich eine viel bessere Lösung, die ein problemloses Upgrade von Vagrant ermöglicht .. _. Diese basiert auf gepatchten Dateien.

Die erste Zeile einer Vagrantfile sollte sein:

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

Die gepatchte Datei vagrantfile_ssh (ursprünglich mit dem Namen ssh.rb) sollte in demselben Verzeichnis wie vagrantfile vorhanden sein. Dies ist sowohl elegant als auch funktional.

Laden Sie das gepatchte vagrantfile_ssh herunter.

2
Michael Field

Windows 7 (nicht in anderen Versionen getestet) 

  1. Klicken Sie mit der rechten Maustaste auf "Arbeitsplatz" und klicken Sie auf "Eigenschaften"
  2. Klicken Sie auf Erweiterte Systemeinstellungen
  3. Klicken Sie auf Umgebungsvariablen
  4. Im zweiten Feld unter "Systemvariablen" scrollen Sie nach unten und klicken Sie auf die Variable "Pfad" und dann auf BEARBEITEN
  5. Stellen Sie sicher, dass der Pfad im Variablenwert enthalten ist, indem Sie (ein Semikolon, falls nicht vorhanden) und anhängen. C:\Programme (x86)\Git\bin; (oder was ist der Pfad zu Ihrer ssh.exe)
  6. OK> OK> OK und RESTART WINDOWS
  7. Sie müssen Vagabund hochfahren, aber danach sollte S-Ssh dauerhaft funktionieren

Weitere Informationen, die bei anderen Versionen hilfreich sein könnten ... http://www.computerhope.com/issues/ch000549.htm

1
byronyasgur

wenn Sie den Vagrant Manager und die virtuelle Box installiert haben, versuchen Sie, cygwin unter Windows zu installieren. Wählen Sie jedoch bei der Installation von cygwin das SSH-Paket VIM aus, mit dem sich Ihr System bei VM anmelden kann von cygwin nachdem Sie Ihre Maschine durch Vagrant hochgefahren haben.

1
Prashanth

Eine andere Lösung hier, aber nur für die virtuelle Box von Windows 10, um den Explorer zu testen Ssh-Benutzer: IEUser Ssh pass: Passw0rd!

0
Gustavo

Ich benutze den Befehl vagrant ssh mit git ssh unter Windows 7, 8.1 und Windows 10.

Laden Sie msysgit nur von der msysgit-Projektseite herunter.

Um ssh.exe auszuführen, fügen Sie nur den bin folter in Windows-Umgebungsvariablen ein oder installieren Sie git von der Git Download-Seite und kopieren Sie den msysgit bin folter in C:\Program Files\Git\bin.

0
Rudy Alcivar

Der Vagrant-Installationsordner enthält eine ssh.exe, die sich wie ssh (1) unter Linux verhält (verwendet die gleichen Flags/Argumente).

Um alle verwendeten Argumente anzuzeigen, können Sie vagrant ssh-config oder vagrant ssh --debug ausführen, um eine ausführlichere Ausgabe zu erhalten.

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

Dies ist nützlich in Situationen, in denen vagrant status sagt, dass sich Ihre VM im poweroff- oder suspended-Modus befindet, wenn Sie sicher sind, dass sie tatsächlich ausgeführt wird, um eine ssh-Verbindung zu erzwingen.

Wenn Sie sich den obigen Befehl nicht merken oder eingeben möchten, schreiben Sie ihn in eine vagrant.ps1-Datei, damit Sie ihn von Ihrer Powershell mit .__ ausführen können. .\vagrant_ssh.ps1

0
rxdazn

hinweis: Wenn die Eingabeaufforderung login as erscheint, geben Sie als Benutzernamen "vagrant" (ohne Anführungszeichen) ein. - Snorkpete 28. Juni 12 um 14:14 Uhr

Oder gehen Sie zu Kategorie-> Verbindung-> Rlogin und setzen Sie das Feld 'Benutzername automatisch anmelden' auf 'Vagrant'.

Speichern Sie die Sitzung.

0
BadAlgorithm

Fügen Sie Ihrer Vagrantfile die folgenden Zeilen hinzu:

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

wobei vagrant_rsa und vagrant_rsa.pub die privaten und öffentlichen Schlüssel sind, die sich im aktuellen Vagrant-Projektordner befinden (und beispielsweise von ssh-keygen -t rsa -C "[email protected]" generiert werden) und openssh.ps1 lautet:

$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 /[email protected]" -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"

dies ist eine vereinfachte Version von joefitzgerald/packer-windows openssh - Setupskript .

Jetzt können Sie vagrant ssh in die Windows-Box eingeben.

Für diejenigen, die vagrant-libvirt verwenden, möchten Sie möglicherweise einige Ports wie RDP vom Host an den Gast weiterleiten. vagrant-libvirt verwendet ssh für Portweiterleitung Sie müssen also ssh unter Windows wie in den obigen Anweisungen eingerichtet einrichten. Anschließend können Sie Ports weiterleiten:

config.vm.network :forwarded_port, Host: 3389, guest: 3389, id: "rdp", gateway_ports: true, Host_ip: '*'
0
mixel

Ich habe auch schon das gleiche Problem getroffen.

  1. Verwenden Sie im Homestead-Ordner bash init.sh.

  2. Wenn Sie keinen .ssh-Ordner in D:/Users/your username/ haben, benötigen Sie ein Paar ssh-Schlüssel, ssh-keygen -t rsa -C "[email protected]".

  3. Bearbeiten Sie Homestead.yaml (Homestead /) und 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. Sie müssen git bash desktop app verwenden.

  2. Git bash desktop app öffnen. vagrant up

  3. vagrant ssh

0
JKol

sie können Emulator-Terminal-Cmder für Windows verwenden.

Befolgen Sie die folgenden Schritte zur Installation:

  1. Zugriff auf cmder.net;
  2. Klicken Sie auf Download Full.
  3. Unzip
  4. (optional) Legen Sie Ihre eigenen ausführbaren Dateien in den bin-Ordner, um sie in Ihren PATH einzuspeisen.
  5. Cmder (Cmder.exe) ausführen

enter image description here

Terminal-Cmder unter Windows

Führen Sie nun den Befehl aus, der für die Einstellungen VM vagrant erforderlich ist, für connect nur den Befehl vagrant ssh. Watch cmder bietet einen eingebetteten ssh-Client.

Ich hoffe das hilft.