web-dev-qa-db-fra.com

Boîte SSH à vagabond sous Windows?

J'utilise Vagrant pour démarrer un VirtualBox VM dans Windows . Sur d'autres plateformes, je peux simplement

$ vagrant ssh

se connecter à la VM.

Comment puis-je me connecter à cette boîte Vagrant dans Windows?

La méthode suggérée dans la documentation de Vagrant pour utiliser PuTTY ne fonctionnait pas non plus:

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

170
Sathish

J'utilise PuTTY pour me connecter à mes boîtes Vagrant sous Windows7.

Assurez-vous

  • convertir le %USERPROFILE%\.vagrant.d\insecure_private_key en .ppk en utilisant PuTTYGen
  • utilisez la clé .ppk dans votre session PuTTY - configurée dans Connexion> SSH> Auth> Fichier de clé privée
  • utiliser l'hôte 127.0.0.1
  • utilisez le port 2222 au lieu de 22
  • vous pouvez définir le nom d'utilisateur par défaut (vagabond) sous Connexion> SSH> Auth> Clé privée pour l'authentification
238
Dror Bereznitsky

Vous devez patch _ du code Vagrant en modifiant un seul fichier, ssh.rb.

Toutes les informations sont ici: https://Gist.github.com/2843680

vagrant ssh fonctionnera désormais aussi sous Windows, tout comme sous Linux.


EDIT: Dans les versions plus récentes, cela est devenu inutile. Vous devez toujours ajouter le chemin d'accès à votre ssh.exe à votre variable PATH

Recherchez ssh.exe sur votre ordinateur, copiez le chemin d’accès (c'est-à-dire C:\Program Files (x86)\Git\bin), ouvrez les Préférences Système, recherchez la variable d'environnement Paramètres, cliquez sur la variable de chemin d'accès, ajoutez le chemin d'accès, en séparant les fichiers existants. chemins utilisant ;.

120
Michael Field

Une autre option utilisant les binaires git:

  1. Installez git: http://git-scm.com/download/win
  2. Menu Démarrer> cmd (Maj + Entrée pour aller en tant qu'administrateur)
  3. set PATH=%PATH%;C:\Program Files\Git\usr\bin
  4. vagrant ssh

J'espère que cela t'aides :)

Juste un bonus après des mois d'utilisation sous Windows: utilisez Console au lieu du terminal Win, pour pouvoir toujours ouvrir un nouvel onglet de terminal avec PATH défini (options de configuration le)

95
gabrielhpugliese

Télécharger PuTTY: http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/

Utiliser PuTTY.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 c'est en panne, utilisez:

vagrant up
72
Rafael Gorski

La réponse acceptée est vraiment utile, mais il peut arriver que, au lieu de la clé suivante:

%USERPROFILE%\.vagrant.d\insecure_private_key

une clé différente doit être convertie au format PuTTY:

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

{vagrant_machine_root} est un dossier avec la Vagrantfile de la machine à laquelle nous voulons nous connecter en utilisant PuTTY.

Comme @ibizaman a mentionné, utilisez vagrant ssh-config pour vérifier quelle clé est utilisée par 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
27
begie

Maintenant, vous pouvez également utiliser le plugin suivant pour vous connecter avec PuTTY:

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

Il suffit d'exécuter 

vagrant plugin installe vagrant-multi-PuTTY

et assurez-vous que PuTTY.exe et puttygen.exe sont dans votre PATH 

Ensuite, vous pourrez utiliser 

mastic vagabond 

Les exécutables mentionnés ci-dessus sont disponibles auprès de: 

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

12
camilohe

Non plus

  1. Dans votre console cmd, tapez ce qui suit:

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

OU

  1. Définissez de manière permanente le chemin dans les variables d'environnement de votre système:

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

Il existe un paquet OpenSSH pour Windows qui est essentiellement un Cygwin dépouillé. Il a un msi-Installer et (après avoir défini votre chemin en conséquence) fonctionne avec "vsagrant ssh":

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

4
Christian Waidner

Personnellement, je viens d'utiliser Cygwin . Ce qui vous permet d'utiliser de nombreuses commandes * nix courantes dans Windows. SSH est l'un d'entre eux.

2
Kiksy

Je faisais comme suggéré ci-dessus mais en changeant la variable d'environnement sur la ligne de commande uniquement avec PATH =% PATH%; "C:\Program files\git\usr\bin"

Cela n'a pas fonctionné. Mais quand j'ai modifié la variable d'environnement via les paramètres Windows, puis lancé une nouvelle commande, l'invite fonctionnait pour la première fois!

2
Paul Pritchard
  1. Installer Git Bash (Livré avec OpenSSH, ainsi que grepname__, findname__, Perlname__, sedname__, etc.;);

    Si vous avez installé Vagrant, ouvrez appwiz.cpl (AKA Ajout/Suppression de programmes) et Repair l'installation Vagrant. Cela fera que vagrant s'ajoute à votre chemin git-bash.

  2. Ouvrez Git Bash (via le menu de démarrage)

  3. cd ~/vagrant/mybox dans votre dossier de boxeurs vagants et vagrant ssh
2
ThorSummoner

Maintenant, j'ai une bien meilleure solution qui permet une mise à niveau indolore de Vagrant . Elle est basée sur un fichier patché.

La première ligne d'un fichier vagrant devrait être:

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

Et le fichier vagrantfile_ssh patché (à l'origine nommé ssh.rb) devrait exister dans le même répertoire que vagrantfile. C'est à la fois élégant et fonctionnel.

Téléchargez le patched vagrantfile_ssh .

2
Michael Field

Windows 7 (non testé sur les autres versions) 

  1. Clic droit sur "Poste de travail" et cliquez sur Propriétés.
  2. Cliquez sur Paramètres système avancés
  3. Cliquez sur les variables d'environnement
  4. Dans la deuxième case sous "Variables système", faites défiler vers le bas, cliquez sur la variable "Chemin" et cliquez sur "Modifier".
  5. Assurez-vous que le chemin est inclus dans la valeur de la variable en ajoutant (un point-virgule s'il n'est pas là et) C:\Program Files (x86)\Git\bin; (ou quel que soit le chemin d'accès à votre ssh.exe)
  6. OK> OK> OK et REDÉMARRER WINDOWS
  7. Vous devrez courir vagabond mais après que ssh vagrant devrait travailler en permanence

Plus d'informations qui pourraient aider avec d'autres versions ... http://www.computerhope.com/issues/ch000549.htm

1
byronyasgur

très simple, une fois que vous avez installé Vagrant Manager et Virtual Box, essayez d’installer cygwin sous Windows, mais assurez-vous de sélectionner le package SSH, package VIM, qui permettra à votre système de se connecter à votre VM. de cygwin après avoir mis en marche votre machine par vagabond.

1
Prashanth

Une autre solution ici mais uniquement pour la boîte virtuelle de Windows 10 pour tester Explorer . Utilisateur ssh: IEUser Ssh pass: Passw0rd!

0
Gustavo

J'utilise la commande vagrant ssh avec git ssh sous Windows 7, 8.1 et Windows 10.

Pour installer uniquement le téléchargement de msysgit à partir de la page du projet msysgit .

Et pour exécuter ssh.exe, incluez uniquement les variables d'environnement bin folter dans Windows ou installez git à partir de Page de téléchargement Git et copiez le msysgit bin folter dans C:\Program Files\Git\bin.

0
Rudy Alcivar

Le dossier d'installation vagrant contient un fichier ssh.exe qui se comporte comme ssh (1) sous Linux (prend les mêmes drapeaux/arguments).

Pour voir tous les arguments utilisés, vous pouvez exécuter vagrant ssh-config ou vagrant ssh --debug pour une sortie plus détaillée.

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

Ceci est utile dans les situations où vagrant status indique que votre machine virtuelle est en mode poweroff ou suspended lorsque vous êtes sûr de son exécution, pour forcer la connexion ssh.

Si vous ne voulez pas vous rappeler/taper la commande ci-dessus, écrivez-la dans un fichier vagrant.ps1 pour pouvoir l'exécuter à partir de votre PowerShell en utilisant .\vagrant_ssh.ps1

0
rxdazn

remarque également: lorsque la connexion en tant que: Invite apparaît, entrez 'vagabond' comme nom d'utilisateur (sans guillemets). - Snorkpete 28 juin 12 à 14:14

Ou vous pouvez aller à Catégorie-> Connexion-> Rlogin et définir le champ "Nom d'utilisateur de connexion automatique" sur "Vagrant".

Enregistrez la session.

0
BadAlgorithm

Ajoutez 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

vagrant_rsa et vagrant_rsa.pub sont les clés privées et publiques situées dans le dossier du projet vagrant actuel (et générées par exemple par ssh-keygen -t rsa -C "[email protected]") 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/$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"

qui est une version simplifiée de joefitzgerald/packer-windows openssh script de configuration .

Vous pouvez maintenant vagrant ssh dans la fenêtre Windows.

Pour ceux qui utilisent vagrant-libvirt , vous pouvez éventuellement transférer certains ports comme RDP d’hôte à invité. vagrant-libvirt utilise ssh pour le transfert de port vous devez donc configurer ssh sous Windows comme dans les instructions ci-dessus, puis vous pourrez transférer des ports tels que:

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

J'ai aussi rencontré le même problème avant.

  1. Dans le dossier Homestead, utilisez bash init.sh.

  2. Si vous n'avez pas de dossier .ssh dans D:/Users/your username/, vous devez obtenir une paire de clés ssh, ssh-keygen -t rsa -C "you@Homestead".

  3. Éditez 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. Vous devez utiliser application de bureau git bash .

  2. Ouvrez l'application de bureau git bash. vagrant up

  3. vagrant ssh

0
JKol

vous pouvez utiliser cmder terminal émulateur pour Windows.

Suivez ci-dessous les étapes pour l'installation:

  1. Accédez à cmder.net;
  2. Cliquez sur Télécharger complet;
  3. Unzip
  4. (facultatif) Placez vos propres fichiers exécutables dans le dossier bin à injecter dans votre PATH.
  5. Exécuter Cmder (Cmder.exe)

enter image description here

Terminal cmder sous Windows

Maintenant, exécutez la commande requise pour les paramètres VM vagrant, pour connecter uniquement, exécutez la commande vagrant ssh; Watch cmder propose le client ssh intégré.

J'espère que ça aide.