No se puede SSH en una máquina virtual vagabunda

11

Máquina local vagabunda instalada en la dirección IP 10.0.0.23con nombre de host lamp-vm.

Usando el vagrant sshcomando, puedo conectarme bien y hacer todo lo que necesito.

Esto crea un error.

$ ssh vagabundo @ lamp-vm -v -v

debug1: conectarse a la dirección 10.0.0.23 puerto 22: se agotó el tiempo de espera de la conexión
ssh: conectarse al host lamp-vm puerto 22: se agotó el tiempo de espera de la conexión

Mi /etc/hostsarchivo contiene 10.0.0.23 lamp-vm.

Mi archivo .ssh / config se ve así

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

He intentado el comando ssh con y sin el -i /path/to/.sh/identity_filetambién.

¿Cómo me conecto a mi máquina virtual Vagrant usando SSH?

csi
fuente

Respuestas:

8

También enfrenté este problema y esta fue mi configuración final que me permitió ingresar a mi máquina vagabunda desde cualquier lugar de mi máquina host.

Archivo vagabundo:

...
# 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 en la máquina:

ssh [email protected]

Se le solicitará una contraseña (el valor predeterminado es vagabundo):

[email protected]'s password:

Y boom, estás dentro!

PD * Puede usar scp también en cualquier lugar de su máquina host:

scp /path/to/src/file [email protected]:/path/to/destination/file
floreciente
fuente
Si bien esto funciona, es bastante frágil: descubrí que nuestro Vagrantfile causó algunas ediciones en / etc / network / interfaces en VirtualBox VM, lo que significaba que mi conexión SSH se caería. Una conexión localhost ( ssh -p 2222 vagrant@localhost) no se verá afectada por esto.
RichVel
8

Es viejo pero como no hay respuesta, le daré una. Mando:

vagrant ssh

Es el equivalente de

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

Este es el comportamiento predeterminado, si cambiaste algo, cambia el comando apropiadamente. En primer lugar, Vagrant creará un usuario vagabundo en su casilla de invitado, y utilizará ese usuario para ssh. Como dijeron las personas anteriores, reenviará el tráfico desde el puerto 2222 en su host al puerto 22 en su invitado, de forma predeterminada (cuando usa vagabundo, ve que se muestra ese mensaje). Y, por último, Vagrant crea claves para la sesión ssh para que no tenga que hacerlo, por lo que debe proporcionar una clave pública como argumento cuando se conecta a través de ssh.

stefwhite
fuente
Esta es la respuesta real y correcta! Funciona sin problemas, con mobaxterm por ejemplo. También debe especificar la ruta completa para
private_key
6

Este comportamiento es por diseño.

Vagrant usa el modo NAT de VirtualBox, lo que significa usar el reenvío de puertos.

No puede SSH directamente a su VM usando el modo NAT.

El uso de 'vagrant ssh' significa que vagrant hará el reenvío de puertos por usted para que no tenga que preocuparse por eso. Creo que se conectará a localhost en el puerto 2222 de forma predeterminada, pero también intentará resolver cualquier colisión de números de puerto.

Si necesita SSH directamente a su VM, cambie la VM al modo de red solo de host o puenteado.

Philip Wigg
fuente
Gracias Philip, pero ¿cómo haría para resolver eso? Perdón por la inexperiencia.
csi
1
Estoy usando el modo de solo host y el problema persiste.
csi
Debería ser la respuesta aceptada. Muy útil para entender esto: ir a través de localhost en el puerto 2222 era la ruta a una configuración Vagrant que funcionaba (por alguna razón no pude conseguir que la clave insecure_private_key funcionara todavía). Descubrí que la 'clave privada insegura' estándar no funcionaba trabajo, así que terminé especificando una clave privada y un nombre de usuario diferentes en el Vagrantfile, pero la parte del puerto local 2222 no necesitaba ser cambiada.
RichVel
3

Windows / Vagrant / Ubuntu

Esto es lo que funcionó para mí y puede averiguar rápidamente si funcionará ejecutando esto en el cliente ssh.

ssh [email protected] -p 2222 -v

-V lo pondrá en modo detallado y mostrará información de depuración ...

$ ssh [email protected] -p 2222 -v
OpenSSH_7.1p1, OpenSSL 1.0.2e 3 de diciembre de 2015
debug1: Conexión al puerto 127.0.0.1 [127.0.0.1] 2222.
debug1: Conexión establecida.
debug1: archivo de identidad /home/Jamie/.ssh/id_rsa tipo 1
debug1: key_load_public: No existe tal archivo o directorio
debug1: archivo de identidad /home/Jamie/.ssh/id_rsa-cert tipo -1
debug1: key_load_public: No existe dicho archivo o
depuración de directorio1 : archivo de identidad /home/Jamie/.ssh/id_dsa tipo -1
debug1: key_load_public: No existe tal archivo o directorio
debug1: archivo de identidad /home/Jamie/.ssh/id_dsa-cert tipo -1
debug1: key_load_public: No existe
depuración de archivo o directorio1 : archivo de identidad /home/Jamie/.ssh/id_ecdsa tipo -1
debug1: key_load_public: No existe tal archivo o directorio
debug1: archivo de identidad /home/Jamie/.ssh/id_ecdsa-cert tipo -1
debug1: key_load_public: No existe tal archivo o directorio
debug1: archivo de identidad /home/Jamie/.ssh/id_ed25519 tipo -1
debug1: key_load_public: No existe tal archivo o directorio
debug1: archivo de identidad /home/Jamie/.ssh/id_ed25519-cert type -1
debug1: Habilitación del modo de compatibilidad para el protocolo 2.0
debug1: Cadena de versión local SSH-2.0-OpenSSH_7.1
debug1 : Protocolo remoto versión 2.0, versión de software remoto OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6
debug1: coincidencia: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.6 pat OpenSSH_6.6.1 * compat 0x04000000
debug1: Autenticación a 127.0.0.1:2222 como 'vagabundo '
debug1: SSH2_MSG_KEXINIT enviado
Conexión cerrada por 127.0.0.1

Entonces ... SSH2_MSG_KEXINIT significa que las claves se están intercambiando. Esto en breve falla ...

En este caso, eliminé mis claves y las volví a generar haciendo esto en la VM. ( 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

Una vez que mis llaves fueron regeneradas pude SSH en mi Vagrant Box.

mrjamiebowman
fuente
0

Destruyó la máquina virtual.
Recargué la máquina virtual.
Todo funcionó

No estoy seguro de por qué, pero obviamente algo no se cargó correctamente en el primer aprovisionamiento.

csi
fuente