¿Cómo puedo configurarlo para que pueda SSH en mi VM huésped VMWare?

16

Por alguna razón, la documentación sobre este proceso en Internet es bastante escasa o está desactualizada. Básicamente, tengo una máquina virtual VMWare invitada en VMWare Fusion (ejecutando Ubuntu 10.10), y tengo Mac OSX 10.6 como host. Quiero poder SSH desde Mac a Linux VM. ¿Cómo puedo configurar las cosas para que esto sea posible?

Derek Thurn
fuente
Relacionado: superuser.com/questions/729712/… Al menos en Windows, puede simplemente enviar a una IP configurada automáticamente por VMWare.
Ben

Respuestas:

13

Absolutamente: es solo una cuestión de usar una interfaz local o puenteada y calcular la dirección IP del sistema que ejecuta el servidor ssh (usando el comando ifconfig). instale openssh-server en la VM, use su cliente ssh y listo.

Si está utilizando una interfaz NAT, puede ser más complicado y generalmente no se recomienda.

Journeyman Geek
fuente
1
Para las personas que no lo saben, no olviden iniciar el servidor ssh utilizando service sshd starto si desean iniciarlo en el arranquechkconfig sshd on
Anthony Hatzopoulos
21

En realidad, hay un montón de buenas razones para usar NAT con sus máquinas virtuales, en lugar de la interfaz en puente ... (Esta es una vieja pregunta, pero surgió como mi primer resultado buscando cómo hacer esto, migrando desde VirtualBox donde lo hago todo el tiempo, así que pensé que valía la pena agregarlo)

Algunas razones para usar NAT son:

  • Es fácil y portátil
  • si está en una LAN de cliente que requiere una dirección MAC conocida para obtener una IP (de lo contrario, deberá intentar adivinar las que no se utilizan y arriesgarse a un conflicto, y generalmente llamar la atención sobre usted :)),
  • cosas como permitir que sus máquinas virtuales utilicen un único servidor proxy en su host (es decir, si no controla la red en la que se encuentra), o poder cortafuegos / filtrar su tráfico de difusión (Windows, etc.) al salir en uno lugar conveniente.
  • poder asignarles una IP fija o reservada para que pueda referirse a ellos por nombre / IP desde fuera del host (nuevamente, si no puede obtener reservas en la red con una interfaz puenteada)
  • pero, sobre todo, le permite esconderse detrás de una única configuración de firewall en su host y compartir cosas entre usted / ellos de una manera más protegida, en lugar de exponer a cada VM al "salvaje" y tener que protegerlos a todos individualmente, etc. .. Al igual que con un módem / enrutador de internet

De todos modos, para mi caso (VMWare Workstation 10, host de Linux, OS X Guest), y cualquiera que se encuentre con esto, esta es la descripción general de lo que funcionó para mí. Además de los gofres y lo que sucede, en realidad solo hay 3 pasos principales.

  • Por lo tanto, primero debe decidir qué desea permitir a su VM / invitado desde "fuera" de su host (tenga en cuenta lo siguiente, podrá acceder fácilmente desde el host). Una apuesta segura sería exponer / permitir solo SSH (puerto 22) a las máquinas en su subred. También podría permitir el puerto 80/443 si tuviera un servidor web en la VM, etc., y también puede usar un "túnel" para acceder a otros servicios usando SSH (se dará un ejemplo a continuación), y usar FUSE / SSHFS para dar su host acceso al sistema de archivos ... (o la función de carpeta compartida en VMWare, pero aún no la he usado).

Entonces, la idea es algo así como: "Permitir que las cosas en la red local de mi host (por ejemplo, 10.1.1.0/24 o 192.168.1.0/24) se conecten al puerto 22222 en el host, que reenviaremos al puerto 22 de un invitado específico ". Tiene que ser un invitado específico, por supuesto (esto hace que poder configurar sus IP sea aún más útil, y puede cambiarlas todas en un solo lugar sin abrir cada VM), al igual que hacerlo a través de su enrutador de Internet para permitir juegos. a través de etc.

  • Luego, después de decidir qué servicios, necesitará

    • permita conexiones en su máquina host al puerto "externo" a través de iptables / firewall. Es posible que sshd ya use el puerto 22 en el host, por lo que puede usar algo como 22222. En este caso, agregue algo como esto a /etc/ufw/before.rules (y reinicie ufw)

      # Su máscara de red / subred local podría ser algo así como 10.1.1.0/24 ...

      -Ufw-before-input -p tcp --dport 22222 -m state --state NEW -s my_subnet_and_mask -j ACCEPT `

    • proporcione a su (s) VM (s) una IP reservada en la configuración principal de VMware DHCP ( opcional, pero más fácil de confiar si desea "pincharla" desde el host ), agregando algo como esto en la parte inferior de / etc / vmware / vmnet8 / dhcpd / dhcpd.conf

      # Just like a normal dhcpd reservation
      host my_vm_1 {
           hardware ethernet *your_vm_eth_mac_here**;
           # This is in default range for guests, but outside the 'pool'.
           # - check that it matches your vmware config
           fixed-address 192.168.198.10; 
           # And/or your own internal nameserver etc
           option domain-name-servers 8.8.8.8;
           option domain-name "some_domain_suffix";
           # This is the default default-route of the VM
           option routers 192.168.198.2; 
      }
      
    • Indique a VMWare que reenvíe las conexiones desde 22222 al invitado: 22 agregando esto a la sección [entrante] de /etc/vmware/vmnet8/nat/nat.conf, luego reinicie los servicios de vmware (vea la nota a continuación)

      [entrante]

      22222 = 192.168.198.10:22

    • Es posible que también deba permitir las conexiones del puerto 22 en su invitado, dependiendo de lo que sea / si tiene un firewall propio. En este caso de invitado de OS X, fue para habilitar el "inicio de sesión remoto" a través de la configuración de uso compartido, en Linux podría ser a través de ufw como en el host anterior, etc.

Entonces, una vez que todo esté hecho, podría estar en su computadora portátil u otra máquina en la LAN, ssh a su estación de trabajo (host vmware) en 22222, y sería arrastrado hacia el invitado al que le dijo que lo enviara. Como se mencionó anteriormente, si también dice que desea poder conectarse al servidor postgres en el invitado (o servidor vnc, que a menudo no está encriptado), puede hacer un túnel en el mismo comando (en lugar de agregarlo también a la conf dhcp). Por ej.

console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432

y se lo enviaría al invitado a través de ip forward en vmware, y podría apuntar su herramienta pgadmin3 a localhost: 54320 (sin privilegios) en su computadora portátil, y su tráfico en la red se cifraría. (Tenga en cuenta que 'localhost' ya está reenviado al invitado)

Notas

  • Hay todo tipo de formas de hacer esto ... Por un lado, podría simplemente hacer un túnel para alojar y especificar la IP del invitado en -L y se "rompería" y le indicaría allí, pero la opción nat.conf es agradable y conveniente, y no tiene que escribirlo cada vez. También hay otras formas de reenvío de puertos
  • Había visto referencias en un par de hilos de una interfaz de usuario de red virtual para hacer esto (como lo ha hecho virtualbox), pero no pude encontrarlo en esta versión
  • No uso Windows, por lo que, aunque supongo que sería muy similar configurar como host, no estoy seguro. Sin embargo, las configuraciones NAT deberían funcionar para cualquier invitado vmware (aunque no he usado ninguna otra versión de VMWare)
  • VMware configura una ruta para que el host pueda contactar al invitado NAT directamente, IE desde la consola del host, puedo hacer ping / ssh, etc. al invitado NAT 192.168.198.10 (definido anteriormente) directamente

    console ~> route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    <snip>
    192.168.198.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
    192.168.233.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
    
  • A partir de una nota de Linux, hay algunos problemas con vmware con systemd init para que se inicie muy bien automáticamente, y junto con eso he descubierto que no puedo reiniciar vmware (vmci no se carga nuevamente), y tengo que reiniciar mi máquina para hacer que las cosas NAT / DHCP anteriores se peguen, pero es posible que no tenga el problema. Sin embargo, hay algunos hilos con soluciones systemd
pastoreo de gatos
fuente
Suena genial, pero ufw no parece estar presente en mi máquina con OS X 10.9.5. ¿Es algo que tenía OS X más antiguo, pero que ahora usa algo más?
Steve Jorgensen
Hola @SteveJorgensen, ufw está bajo Linux (Mi host es Linux, y el invitado era OS X en esta respuesta), pero es la misma idea con OS X como host; permita el acceso a algún puerto específico (en el caso anterior 22222) en el host con cualquier herramienta que sea apropiada, y dígale a VMWare que haga el reenvío al invitado. La otra mención de ufw fue que, sea lo que sea que tenga como invitado, también podría tener un firewall habilitado, por lo que es posible que deba iniciar sesión en el invitado y permitir el acceso al puerto al que estaba redirigiendo (en el caso anterior, 22)
herdingofthecats
No tengo OS X disponible en este momento, pero parece recordar haberlo usado ipfwen algún momento. Tuve una búsqueda rápida por ti, y no vi muchas publicaciones útiles, pero esto menciona pfctl, que veo en otra publicación parece ser el reemplazo de pfctl en OS X 10.10 en adelante. No puedo probarlo, lo siento, pero espero que ayude un poco
herdingofthecats
2

Para simplificar las cosas:

  1. Ejecute su VM
  2. Desde el menú> Máquina virtual> Adaptador de red> En puente.
  3. En la máquina virtual, encontrar su dirección IP, como por ejemplo en Linux: ifconfig.
  4. Desde el host, ssh usando ssh user@ip.

Supongo que tiene un servicio SSH instalado y en ejecución.

zed
fuente
1

En lugar de conocer la IP a SSH, configuré Avahi en mis invitados Linux para que emita un nombre de host dinámico, consulte mi respuesta aquí: /superuser//a/710233/242604

¡Espero que esto ayude!

berto
fuente
-1

Puede usar una interfaz de red puente que ayuda a conectarse a Internet y una conexión SSH fácil.

Hieu
fuente