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
Ich verwende PuTTY, um eine Verbindung zu meinen Vagrant-Boxen unter Windows7 herzustellen.
Stell sicher, dass du
%USERPROFILE%\.vagrant.d\insecure_private_key
in .ppk mit PuTTYGen127.0.0.1
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 ;
.
Eine weitere Option mit Git-Binärdateien:
set PATH=%PATH%;C:\Program Files\Git\usr\bin
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).
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
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
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
Entweder
Geben Sie in Ihre cmd
-Konsole Folgendes ein:
set PATH=%PATH%;C:\Program Files (x86)\Git\bin
ODER
Legen Sie den Pfad dauerhaft in den Umgebungsvariablen Ihres Systems fest:
C:\Program Files (x86)\Git\bin;
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
Ich persönlich verwende einfach Cygwin . Damit können Sie viele allgemeine * nix-Befehle in Windows verwenden. SSH ist einer von ihnen.
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!
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.
Öffnen Sie Git Bash (über das Startmenü)
cd ~/vagrant/mybox
in den Ordner Ihrer Vagrant Box und vagrant ssh
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.
Windows 7 (nicht in anderen Versionen getestet)
Weitere Informationen, die bei anderen Versionen hilfreich sein könnten ... http://www.computerhope.com/issues/ch000549.htm
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.
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!
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
.
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
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.
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: '*'
Ich habe auch schon das gleiche Problem getroffen.
Verwenden Sie im Homestead-Ordner bash init.sh
.
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]"
.
Bearbeiten Sie Homestead.yaml (Homestead /) und authoriza: ~/.ssh/id_rsa.pub
.
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
Sie müssen git bash desktop app verwenden.
Git bash desktop app öffnen. vagrant up
vagrant ssh
sie können Emulator-Terminal-Cmder für Windows verwenden.
Befolgen Sie die folgenden Schritte zur Installation:
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.