Intentando SSH a VM local Ubuntu con Putty

145

He configurado una máquina virtual de servidor Ubuntu, he instalado OpenSSH y ahora estoy tratando de conectarme con Putty. Dentro de Putty, en "Nombre de host", pongo "Ubuntu", dado que esto es lo que pensé que se llamaba cuando configuré la VM. Sin embargo, acabo de recibir el error: "Tiempo de conexión agotado"

También intenté poner "127.0.0.1" en el nombre de host dentro de Putty y simplemente obtuve "Conexión rechazada". Tenga en cuenta que he realizado el reenvío de puertos para SSH y HTTP dentro de Oracle VM, por lo que no sé cómo hacerlo funcionar.

wickywills
fuente
FWIW bridged / host solo no funcionó para mí, pero pude solucionarlo, en esencia, solo con SSH 'out' (scp puede ir en ambos sentidos, después de todo), así que no necesitaba acceso SSH dentro del huésped.
rogerdpack

Respuestas:

183

VirtualBox creará una red privada (10.0.2.x) que se conectará a su red host mediante NAT . (A menos que se configure de otra manera).

Esto significa que no puede acceder directamente a ningún host de la red privada desde la red host. Para hacerlo, necesita un reenvío de puertos. En las preferencias de red de su VM, por ejemplo, puede configurar VirtualBox para abrir el puerto 22 en 127.0.1.1 (una dirección de bucle invertido de su host) y reenviar cualquier tráfico al puerto 22 de 10.0.2.1 (la dirección interna de su VM)

De esta manera, puede apuntar masilla al puerto 22 de 127.0.1.1 y VirtualBox redirigirá esta conexión a su VM donde su demonio ssh la responderá, permitiéndole iniciar sesión.

michas
fuente
20
Gracias, esto funcionó para mí. Desde cygwin puedo ahora ssh [email protected]y estoy dentro. El panel que necesita es Configuración-> Red-> Reenvío de puertos, y el mío ahora se ve como se muestra en: imgur.com/BjGh3N2
user7543
38
Esto NO funcionará si ya tiene ssh ejecutándose en su host porque los puertos se superponen. Redireccionar el puerto 127.0.1.1:2222 a 10.0.2.X: 22 y luego ejecutar 'ssh 127.0.1.1 -p 2222' desde su host '
dzlatkov
8
Además, asegúrese de tener el servidor openssh instalado en el sistema operativo del cliente. sudo apt-get install openssh-server
Illuminati
17
Acabo de tener este problema yo mismo, gracias por la explicación. Básicamente seguí lo que dijiste. Fui a Configuración y mi conexión mostró 'NAT'. Hice clic en la opción 'reenvío de puertos' en la parte inferior de la pantalla. Le puse el nombre 'PuTTY-port-fwd', protocolo TCP, host IP 127.0.0.1 host host 2222 guest IP 10.0.2.15 guest guest 22. Luego lancé PuTTY y lo configuré en 127.0.0.1 puerto 2222 y se conectó a mi OpenSUSE vm. Gracias chicos, espero que esto ayude a cualquiera en el futuro ;-)
BubbleMonster
3
Esto funcionó para mí, aunque tuve que decirle a VirtualBox que abriera el puerto 2222 en 127.0.0.1. Luego pude iniciar sesión usandossh -p 2222 [email protected]
mchen.ja
44

Quería usar masilla para conectarme a mi ubuntu en una caja virtual (razones de comodidad, el VB es simplemente extraño. No puedo trabajar a menos que esté en un terminal adecuado). De todas formas,

  1. Asegúrese de que el cliente ssh esté instalado en su Linux. Si no, instálelo sudo apt install ssh.
  2. Apague el sistema operativo.
  3. Ahora en su VB ir a Settings -> Network ->en Adapter 1elegir Host-only adapter-> clic OK.
  4. Ahora inicia tu sistema operativo. Correr ifconfig; ahora la dirección de entrada es su IP.
  5. Use esto y ejecútelo en su masilla. Inicie sesión con sus credenciales.

La única desventaja de usar un adaptador solo de host es que su sistema operativo invitado no tendrá acceso a una red más amplia (por ejemplo, Internet).

Si también necesita que su VM tenga acceso a Internet, deje el Adaptador 1 como NAT y habilite el Adaptador 2, configurado como un adaptador de solo host. Esto permitirá que su VM se conecte a Internet usando NAT, así como también establecer una conexión local a su Host usando Host-Only.

Priya_user1907390
fuente
44
"puenteado" colocará la dirección IP en su interfaz local y conectará el acceso a Internet
Duke
2
La ventaja de usar dos interfaces, como se describe aquí, en puente, es que no confía en que el servidor dhcp local acepte sus solicitudes. La mayoría de los servidores dhcp en lugares públicos (aeropuerto, aviones, hoteles e incluso la mayoría de las redes de la compañía) no ofrecerán una segunda ip a través del mismo adaptador wifi, por lo que una VM con puente no funcionará en ese entorno. Aquí hay un muy buen paso a paso sobre cómo configurar esta configuración en particular: christophermaier.name/2010/09/01/…
Yves Dorfsman
Funciona a las
mil maravillas
muchas gracias.
Lucas
muchas gracias. pero cuando cambio la configuración de red de Ubuntu de NATa host only adapterya no puede conectarse a Internet, ¿alguna solución?
Lucas
19

Primero debe decidir si su VM se conectó a su máquina host a través de una conexión de puente o a través de un NAT, pero de otra manera necesitará poner la dirección IP de la VM en masilla para poder conectarse a la IP, en la ejecución del terminal VM Este comando le muestra la dirección IP de la máquina (y no 127.0.0.1 no es la dirección IP de la máquina)

VM # ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:d9:16:b3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.1 scope global eth0
       valid_lft forever preferred_lft forever

en este caso mi dirección IP será el 10.0.2.15,

Primero intente asegurarse de que puede comunicarse en un nivel básico con VM, abra una ventana de terminal en su host e intente hacer ping a la VM

HOST # ping 10.0.2.15

PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 10.0.2.15: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 10.0.2.15: icmp_seq=3 ttl=64 time=0.099 ms

Si obtiene un resultado ant, asegúrese de tener un servicio ssh ejecutándose en la VM, en el terminal de su tipo de VM como root,

VM # netstat -lnpt | grep 22
tcp   0  0  0.0.0.0:22  0.0.0.0:*  LISTEN  2361/sshd

Esto indica que tenemos un servicio / proceso con PID (2361) llamado sshd (demonio OpenSSH) que escucha el puerto 22.

Puede probar si el servicio funciona correctamente al intentar enviarlo desde la VM por sí mismo,

VM # ssh 127.0.0.1

A continuación, debe asegurarse de que no está bloqueando el puerto 22 en su firewall / iptables, no puedo creerlo, pero échele un vistazo de todos modos. En la máquina virtual, escriba este comando para mostrarle las tablas ip,

VM # iptables -nvL INPUT

en la salida debería tener una línea como esta:

0  0  ACCEPT  tcp  --  *  *  0.0.0.0/0  0.0.0.0/0  tcp  dpt:22  ctstate  NEW
Rabin
fuente
Intenté eso, y aparentemente mi dirección IP es 10.0.2.15. Traté de ingresar eso en Putty y acabo de recibir el connection timed outerror nuevamente. También probé el nvLcomando que mencionas, y consigo una carga de (a falta de una palabra mejor) Dalla - Chain INPUT (policy accept......, chain FORWARD.....etc
wickywills
Reescribo mi respuesta con algunos puntos más que puede verificar, por favor hágamelo saber.
Rabin
2
¿Qué pasa si el ping 10.0.2.15 se agota? Yo uso NAT.
Dan Dascalescu
El reenvío de puertos fue la respuesta.
Dan Dascalescu
Por conveniencia: iptables -A INPUT -p tcp --dport ssh -j ACCEPTpermitirá el tráfico entrante si no ve tcp en sus iptables.
Eric Hodgins
15

Mi resolución era similar a la de Roman T, sin embargo, necesitaba agregar algunos pasos adicionales. En mi caso, tenía Ubuntu Server 14 VM ejecutándose en un escritorio de Windows 8 en el dominio de Windows 2008. Si probé NAT o Bridge podría acceder a Internet pero no pude conectarme a través de SSH.

Si probé el Adaptador de solo host, eso me permitiría usar SSH en la máquina, pero no podría acceder a Internet.

También probé el reenvío de puertos y no me alegró. Abrí Wireshark y simplemente no encontraba VM.

Entonces mi solución fue agregar un segundo adaptador de red.

Método

Con VM apagada

  1. Haga clic en Configuración> Red Haga clic en Adaptador 1 y elija Adaptador en puente
  2. Haga clic en Adaptador 2 y elija Adaptador solo de host
  3. Haga clic en Archivo> Preferencias> Redes en Redes NAT si no ve una red NAT, haga clic en el icono + para agregar la red NAT.
  4. Haga clic en Redes de solo host si no ve una red de solo host haga clic en el ícono + para agregar una

Iniciar VM

  1. Para ver el adaptador de red, debe escribir

    ifconfig -a
    
  2. ¿Puede ver que el adaptador de red se agrega con una dirección mac pero no una IP?

  3. Si es así, debe editar / etc / network / interfaces para configurar DHCP. Ejemplo a continuación usando VI / VIM pero puedes usar el editor de tu elección

    sudo vi /etc/network/interfaces
    
  4. agrega las líneas

    auto eth1
    iface eth1 inet dhcp
    
  5. guardar y salir del archivo.
  6. Luego intente reiniciar el servicio de red con el siguiente comando

    sudo service networking restart
    
  7. O si eso falla, reinicie VM.
  8. Una vez reiniciado, escriba a continuación para ver si a eth1 se le ha asignado una dirección IP

    ifconfig -a
    
  9. si es así, vea si puede SSH en la VM
mrjamesmyers
fuente
Había probado su solución, pero no se ha asignado ninguna IP a la nueva interfaz. Además, tengo DHCP habilitado en mi VBox.
Athlan
12

Las siguientes instrucciones funcionaron con Ubuntu 14.04 y Oracle VirtualBox 4.3.30.

Haga esto en VirtualBox:

  1. Haga clic con el botón derecho en su máquina virtual, seleccione "Configuración" y luego seleccione "Red".

  2. Junto a "Adjunto a", seleccione "Adaptador solo de host". Como nota al margen, el "Adaptador en puente" también funcionará. Consulte la documentación de VirtualBox para obtener más detalles sobre cada opción.

Haga esto dentro de su máquina virtual:

  1. Encuentre su dirección IP de red abriendo una terminal y escribiendo ifconfig. Observe la dirección IP que se muestra junto a eth0, en "inet addr". También puede ver su dirección IP si hace clic en el icono de Red en la esquina superior derecha de su escritorio y luego selecciona "Información de conexión".

  2. Instale openssh-server escribiendo lo siguiente en la terminal:

    sudo apt-get install openssh-server
    
  3. Por si acaso, reinicie la máquina virtual.

Ahora puede conectarse desde PuTTY utilizando la dirección IP del paso 1 anterior y el puerto 22.

Roman T
fuente
2

Para Ubuntu 18.04 y VirtualBox 5.2:

  1. Crear una interfaz de red de host

    yo. En Virtualbox, haga clic en File/ Host Network Manager.

    ii) Si aún no tiene un adaptador de red de host (predeterminado vboxnet0), haga clic en Create.

  2. Habilite la configuración del adaptador de solo host para VM

    yo. En Virtualbox, haga clic derecho en su VM y seleccione Settings.

    ii) Haz clic Networky selecciona Adapter 2.

    iii) Haga clic Enable Network Adapter.

    iv. Debajo de Attached to:seleccionar Host-only Adapter. Debería aparecer el nombre del adaptador que creó en el paso 1 (predeterminado vboxnet0).

  3. Configure las configuraciones de red en VM

    yo. Comience su máquina virtual y comprobar la interfaz fue añadido: ip a. Busque la interfaz que no tiene una inetdirección. En el mío, lo fue enp0s8.

    ii) Editar /etc/netplan/01-netcfg.yaml. por ej sudo vi /etc/netplan/01-netcfg.yaml.

    iii) En la configuración del adaptador original, agregue detalles de configuración:

    enp0s8:
        addresses: [192.168.56.2/24]
        gateway4: 192.168.56.1
        dhcp4: no
    

    Esto asigna una dirección IP estática para su VM para la comodidad de SSH. Si desea dhcpmanejar el direccionamiento en su lugar, omita la configuración de dirección y puerta de enlace y configúrelo dhcp4en yes.

    iv. Volver a cargar el fichero de configuración: sudo netplan apply.

  4. SSH en su VM

    yo. Si no se ha instalado sshen la máquina virtual: sudo apt install ssh.

    ii) De su máquina anfitrión, SSH en la máquina virtual: ssh <username>@192.168.56.2.

ooknosi
fuente
Gracias, me salvó el día!
anber