Impossible de SSH dans une machine virtuelle vagabonde

11

Machine locale Vagrant installée à l'adresse IP 10.0.0.23avec le nom d'hôte lamp-vm.

En utilisant la vagrant sshcommande, je peux très bien me connecter et faire tout ce dont j'ai besoin.

Cela crée une erreur

$ ssh vagrant @ lamp-vm -v -v

debug1: connexion à l'adresse 10.0.0.23 port 22: connexion expirée
ssh: connexion à la lampe hôte-port vm 22: connexion expirée

Mon /etc/hostsfichier contient 10.0.0.23 lamp-vm.

Mon fichier .ssh / config ressemble à

Host lamp-vm
User vagrant
IdentityFile ~ / .ssh / vagrant

J'ai également essayé la commande ssh avec et sans le -i /path/to/.sh/identity_file.

Comment se connecter à ma machine virtuelle Vagrant à l'aide de SSH?

csi
la source

Réponses:

8

J'ai également fait face à ce problème et c'était ma configuration finale qui m'a permis de ssh dans ma machine vagabonde de n'importe où dans ma machine hôte.

Vagrantfile:

...
# Setting up private_network to have virtual host
config.vm.network :private_network, ip: "192.168.33.10"

# Enable ssh forward agent
config.ssh.forward_agent = true
...

ssh dans la machine:

ssh [email protected]

Un mot de passe vous sera demandé (la valeur par défaut est vagabonde):

[email protected]'s password:

Et boum, vous y êtes!

PS * Vous pouvez également utiliser scp n'importe où sur votre machine hôte:

scp /path/to/src/file [email protected]:/path/to/destination/file
trébucher
la source
Bien que cela fonctionne, il est assez fragile - j'ai constaté que notre fichier Vagrant a provoqué des modifications dans / etc / network / interfaces sur la machine virtuelle VirtualBox, ce qui signifie que ma connexion SSH allait chuter. Une connexion localhost ( ssh -p 2222 vagrant@localhost) ne sera pas affectée par cela.
RichVel
8

C'est vieux mais comme il n'y a pas de réponse, je vais en fournir une. Commander:

vagrant ssh

Est l'équivalent de

ssh vagrant@localhost -p 2222 -i .vagrant/machines/default/virtualbox/private_key

Il s'agit du comportement par défaut, si vous avez modifié la commande de modification de quelque chose de manière appropriée. Tout d'abord, Vagrant créera un utilisateur vagabond sur votre boîte d'invité, et vous utiliserez cet utilisateur pour ssh. Comme les gens précédents l'ont dit, il transfèrera le trafic du port 2222 sur votre hôte vers le port 22 sur votre invité, par défaut (lorsque vous utilisez vagrant up, vous voyez ce message s'afficher). Enfin, Vagrant crée des clés pour la session ssh afin que vous n'ayez pas à le faire, vous devez donc fournir la clé publique comme argument lors de la connexion via ssh.

stefwhite
la source
C'est la vraie et la bonne réponse! Fonctionne sans problème, avec mobaxterm par exemple. Vous devez également spécifier le chemin complet pour private_key
sineverba
6

Ce comportement est voulu par la conception même du produit.

Vagrant utilise le mode NAT VirtualBox, ce qui signifie utiliser la redirection de port.

Vous ne pouvez pas SSH directement sur votre machine virtuelle en utilisant le mode NAT.

L'utilisation de «vagrant ssh» signifie que vagrant effectuera la redirection de port pour vous afin que vous n'ayez pas à vous en soucier. Je pense qu'il se connectera à localhost sur le port 2222 par défaut, mais il essaiera également de trier toutes les collisions de numéros de port.

Si vous avez besoin de SSH directement sur votre machine virtuelle, passez la machine virtuelle en mode réseau uniquement hôte ou ponté.

Philip Wigg
la source
Merci Philip, mais comment pourrais-je résoudre ce problème? Désolé pour l'inexpérience.
csi
1
J'utilise le mode hôte uniquement et le problème persiste.
csi
Doit être la réponse acceptée. Très utile pour comprendre cela - passer par localhost sur le port 2222 était la route vers une configuration de Vagrant qui fonctionnait (pour une raison quelconque, je n'ai pas encore pu faire fonctionner la clé insecure_private_key.) J'ai trouvé que la `` clé privée non sécurisée '' standard ne fonctionnait pas travail, donc j'ai fini par spécifier une clé privée et un nom d'utilisateur différents dans le Vagrantfile, mais la partie port local 2222 n'a pas besoin d'être modifiée.
RichVel
3

Windows / Vagrant / Ubuntu

C'est ce qui a fonctionné pour moi et vous pouvez rapidement déterminer si cela fonctionnera en l'exécutant sur le client ssh.

ssh [email protected] -p 2222 -v

Le -v le mettra en mode verbeux et affichera les informations de débogage ...

$ ssh [email protected] -p 2222 -v
OpenSSH_7.1p1, OpenSSL 1.0.2e 3 décembre 2015
debug1: connexion au port 12722.0.0.1 [127.0.0.1] 2222.
debug1: connexion établie.
debug1: fichier d'identité /home/Jamie/.ssh/id_rsa type 1
debug1: key_load_public: aucun fichier ou répertoire de ce type
debug1: fichier d'identité /home/Jamie/.ssh/id_rsa-cert type -1
debug1: key_load_public: aucun fichier de ce type ou répertoire
debug1: fichier d'identité /home/Jamie/.ssh/id_dsa type -1
debug1: key_load_public: Aucun fichier ou répertoire
debug1: fichier d'identité /home/Jamie/.ssh/id_dsa-cert type -1
debug1: key_load_public: Pas de tel fichier ou répertoire
debug1: fichier d'identité /home/Jamie/.ssh/id_ecdsa type -1
debug1: key_load_public: Aucun fichier ou répertoire de ce type
debug1: fichier d'identité /home/Jamie/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: Aucun fichier ou répertoire de ce type
debug1: fichier d'identité /home/Jamie/.ssh/id_ed25519 type -1
debug1: key_load_public: Aucun fichier ou répertoire
tel debug1: fichier d'identité /home/Jamie/.ssh/id_ed25519-cert type -1
debug1: activation du mode de compatibilité pour le protocole 2.0
debug1: chaîne de version locale SSH-2.0-OpenSSH_7.1
debug1 : Protocole distant version 2.0, version logicielle distante OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: correspondance: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 pat OpenSSH_6.6.1 * compat 0x04000000
debug1: authentification auprès de 127.0.0.1:2222 en tant que «vagabond» "
debug1: SSH2_MSG_KEXINIT envoyé
Connexion fermée par 127.0.0.1

Donc ... SSH2_MSG_KEXINIT signifie que les clés sont échangées. Cela échoue rapidement ...

Dans ce cas, j'ai supprimé mes clés et les ai régénérées en le faisant sur la machine virtuelle. ( http://ask.xmodulo.com/sshd-error-could-not-load-host-key.html )

$ ls -al / etc / ssh / ssh key
$ sudo rm -r / etc / ssh / ssh
key
$ sudo dpkg-reconfigure openssh-server

Une fois mes clés régénérées, j'ai pu SSH dans ma Vagrant Box.

mrjamiebowman
la source
0

Détruit la machine virtuelle
Rechargé la machine virtuelle
Tout fonctionnait

Je ne sais pas pourquoi, mais de toute évidence, quelque chose ne s'est pas chargé correctement lors du premier approvisionnement.

csi
la source