SSH pour Vagrant box dans Windows?
J'utilise Vagrant pour démarrer une VirtualBox VM sous windows. Dans d'autres plateformes, je peux juste
$ vagrant ssh
pour se connecter à la VM.
comment se connecter à cette boite vagabonde dans windows?
la façon suggérée dans la documentation vagabonde d'utiliser le mastic ne fonctionnait pas non plus:
http://docs-v1.vagrantup.com/v1/docs/getting-started/ssh.html
22 réponses
j'utilise PuTTY pour me connecter à mes boîtes vagabondes sur Windows7.
assurez-vous
- convertissez le
%USERPROFILE%\.vagrant.d\insecure_private_key
en .ppk using PuTTYGen - utiliser le .clé ppk dans votre session PuTTY - configurée dans la connexion > SSH > Auth > fichier à clé privée
- use hôte
127.0.0.1
- utiliser le port 2222 au lieu de 22
- vous pouvez définir le nom d'utilisateur par défaut (errant) Sous connexion > SSH > Auth > clé privée pour authentification
Vous devez patch certains Vagabond code en modifiant un seul fichier, ssh.rb
.
toute l'info est ici: https://gist.github.com/2843680
vagrant ssh
fonctionnera désormais aussi sous Windows, comme sous Linux.
modifier : dans les Versions plus récentes, cela est devenu inutile. Vous avez encore à ajouter le chemin votre ssh.exe
à votre PATH
Variable :
Rechercher ssh.exe sur votre ordinateur, copiez le chemin (i.e. C:\Program Files (x86)\Git\bin
), ouvrez les préférences du système, trouvez la variable D'environnement Paramètres, cliquez sur la Variable de chemin, ajoutez le chemin, séparant les chemins existants en utilisant ;
.
une autre option utilisant les binaires git:
- installer git: http://git-scm.com/download/win
- Menu Démarrer > cmd (maj+entrée pour passer en tant qu'Administrateur)
-
set PATH=%PATH%;C:\Program Files\Git\usr\bin
-
vagrant ssh
Espérons que cela aide :)
juste un bonus après des mois en utilisant celui sur Windows: utilisez Console au lieu du terminal Win, vous pouvez donc toujours ouvrir un nouvel onglet terminal avec le chemin défini (configurer sur les options)
télécharger Putty: http://www.chiark.greenend.org.uk / ~ sgtatham / putty /
avec du mastic.exe:
Putty GUI:
HostName: 127.0.0.1
Port: 2222
Lorsque vous vous connectez(Écran du Terminal):
User: vagrant
Passwd: vagrant
avant d'essayer de vous connecter, vérifiez votre VM en utilisant cmd.exe:
vagrant status
si elle est en panne, utiliser:
vagrant up
la réponse acceptée est vraiment utile, mais il peut arriver qu'au lieu de la clé suivante:
%USERPROFILE%\.vagrant.d\insecure_private_key
une clé différente doit être convertie au format de la pâte:
{vagrant_machine_root}/.vagrant/machines/default/virtualbox/private_key
où {vagrant_machine_root}
est un dossier avec le Vagrantfile
de la machine à laquelle nous voulons nous connecter en utilisant Putty.
comme @ibizaman a mentionné utiliser vagrant ssh-config
pour vérifier quelle clé est utilisée par les vagabonds:
$ 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
Maintenant, vous pouvez également utiliser le plugin suivant pour se connecter en utilisant putty:
https://github.com/nickryand/vagrant-multi-putty
exécuter
vagrant plugin installer vagrant-multi-putty
et assure-toi putty.exe et puttygen.exe sont dans votre CHEMIN d'accès
alors vous pourrez utiliser
vagrant mastic
les exécutables mentionnés ci-dessus sont disponibles à partir de:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
soit
-
dans votre
cmd
type de console le suivant:set PATH=%PATH%;C:\Program Files (x86)\Git\bin
ou
-
définissez en permanence le chemin dans les variables d'environnement de votre système:
C:\Program Files (x86)\Git\bin;
il y a un paquet OpenSSH Pour Windows qui est essentiellement un Cygwin dépouillé. Il dispose d'un installateur msi et (après avoir paramétré votre chemin en conséquence) fonctionne avec "vsagrant ssh":
http://sourceforge.net/projects/opensshwindows/?source=directory
maintenant j'ai une bien meilleure solution qui permet la mise à niveau sans douleur Vagrant. Il est basé sur le fichier patché.
la première ligne d'un vagrantfile doit être:
load "vagrantfile_ssh" if Vagrant::Util::Platform.windows?
Et le patché vagrantfile_ssh fichier (à l'origine nommée ssh.rb ) doit exister dans le même répertoire que vagrantfile . C'est à la fois élégante et fonctionnelle.
télécharger le patché vagrantfile_ssh .
-
Install Git Bash (livré avec OpenSSH, ainsi que
grep
,find
,perl
,sed
, etc.;)si vous avez Vagrant installé, ouvrez
appwiz.cpl
(alias Add/Remove Programs) et Repair the Vagrant installation. Cela va faire vagrant s'ajouter à votre chemin git-bash. -
Ouvrir Git Bash (Via le menu démarrer)
-
cd ~/vagrant/mybox
à votre dossier vagrant box'es etvagrant ssh
je faisais comme suggéré ci-dessus mais en changeant la variable d'environnement sur la ligne de commande seulement avec PATH=%PATH%;"C:\Program files\git\usr\bin "
cela n'a pas fonctionné. Mais quand j'ai modifié la variable D'environnement en paramétrant Windows et que j'ai lancé une invite de commande, ça a marché pour la première fois!
Windows 7 (non testé sur d'autres versions)
- clic droit sur "mon ordinateur" et cliquez sur Propriétés
- Cliquez Sur Paramètres Système Avancés
- , Cliquez Sur Variables D'Environnement
- dans la deuxième case sous" Variables du système " faites défiler vers le bas et cliquez sur "Chemin" de la variable et cliquez sur "Modifier
- assurez-vous que le chemin est inclus dans la valeur Variable en ajoutant (un point-virgule s'il n'y est pas et) C:\Program Files ( x86)\Git\bin; (ou quel que soit le chemin vers votre ssh.exe) 151960920"
- OK > OK et redémarrer WINDOWS
- vous devrez courir vagrant vers le haut mais après que vagrant SSH devrait travailler de façon permanente
plus D'informations qui pourraient aider avec d'autres versions ... http://www.computerhope.com/issues/ch000549.htm
très simple, une fois que vous installez Vagrant manager et virtual box, essayez d'installer cygwin sur windows, mais lors de l'installation de cygwin, assurez-vous de sélectionner le paquet SSH, paquet VIM qui permettra à votre système de se connecter à votre VM à partir de cygwin après avoir fait tourner votre machine à travers vagrant.
note aussi: lorsque l'invite login as: prompt apparaît, entrez "vagrant" comme nom d'utilisateur (sans guillemets). - Snorkpete 28 Juin 12 à 14: 14
ou vous pouvez aller dans la catégorie->connexion->Rlogin et définir le champ 'Auto-login username' en 'Vagrant'.
Enregistrer la session.
j'utilise vagrant ssh
avec git ssh
sur windows 7, 8.1 et Windows 10.
pour installer seulement télécharger msysgit de page du projet msysgit .
et pour exécuter ssh.exe
n'inclure que le bin folter
aux variables d'environnement de windows ou installer git à partir de Git Download page et copier le msysgit bin folter
à C:\Program Files\Git\bin
.
ajouter les lignes suivantes à votre 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
où vagrant_rsa
et vagrant_rsa.pub
sont les clés privées et publiques situées dans le dossier courant du projet vagrant (et générées par exemple par ssh-keygen -t rsa -C "your@email.here"
) et openssh.ps1
est:
$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/' } |
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"
qui est une version simplifiée de joefitzgerald/emballeur-windows, openssh script d'installation .
Maintenant vous pouvez vagrant ssh
dans les fenêtres boîte.
pour ceux qui utilisent vagrant-libvirt vous voulez peut-être transférer certains ports comme RDP de host à guest. vagrant-libvirt utilise ssh pour port forwarding vous devez donc configurer SSH sur Windows comme dans les instructions ci-dessus et ensuite vous pourrez transférer des ports comme:
config.vm.network :forwarded_port, host: 3389, guest: 3389, id: "rdp", gateway_ports: true, host_ip: '*'
j'ai également rencontré le même problème avant.
-
dans le dossier homestead, utilisez
bash init.sh
. -
si vous n'en avez pas .ssh dossier dans
D:/Users/your username/
, vous devez obtenir une paire de clés ssh,ssh-keygen -t rsa -C "you@homestead"
. -
Modifier Homestead.yaml (homestead/),
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
-
, Vous devez utiliser git bash application de bureau .
-
Ouvrir git bash application de bureau.
vagrant up
-
vagrant ssh
une autre solution ici, mais seulement pour la boîte virtuelle de windows 10 pour tester l'Explorateur. utilisateur ssh: IEUser ssh pass:Passw0rd!
le dossier d'installation vagrant contient un ssh.exe qui se comporte comme ssh (1) sur linux (prend les mêmes options/arguments).
Pour voir tous les arguments utilisés, vous pouvez exécuter vagrant ssh-config
ou vagrant ssh --debug
pour une sortie détaillée.
de 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"
c'est utile dans les situations où vagrant status
dit que votre vm est en mode poweroff
ou suspended
quand vous êtes positif c'est en fait Je cours, pour forcer la connexion ssh.
si vous ne voulez pas vous rappeler/taper la commande ci-dessus, juste l'écrire dans un fichier vagrant.ps1
pour que vous puissiez l'exécuter à partir de votre powershell en utilisant
.\vagrant_ssh.ps1
vous pouvez utiliser l'émulateur terminal cmder pour windows.
suivre ci-dessous les étapes pour l'installation:
- accès cmder.net;
- cliquez sur Télécharger;
- Décompresser
- (optionnel) placez vos propres fichiers exécutables dans le dossier bin pour être injectés dans votre chemin.
- Exécuter Cmder (Cmder.exe) 151960920"
Terminal cmder on Windows
exécute maintenant la commande requise pour les paramètres VM vagrant, pour connect exécute seulement la commande vagrant ssh; Cmder montre offre SSH client intégré.
j'espère que cela aidera.
je pense qu'une meilleure réponse à cette question serait la suivante:
https://eamann.com/tech/linux-flavored-windows /
Eric a écrit un bel article sur la façon de transformer votre ordinateur windows en un environnement Linux. Même avec des hacks pour obtenir Vim travaillant nativement dans le cmd.
si vous parcourez ce guide, qui vous permet essentiellement d'installer git cli, et avec quelques hacks, vous pouvez faire monter un commandez l'invite et tapez vagrant SSH dans le dossier de votre boîte vagrant et il fera correctement les bonnes choses, pas besoin de configurer les clés SSH etc. Tout ce qui vient avec ssh et le git cli /bin.
la puissance de ceci est que vous pouvez alors réellement exécuter powershell et encore obtenir tout le *nix bonté. Cela simplifie vraiment votre environnement et aide à courir Vagrant et d'autres choses.
TL;DR Download git cli et add git / bin to PATH. Hack vim.chauve-souris dans /bin travailler pour windows. Utilisez SSH nativement dans cmd.