Abriendo puertos a de una máquina virtual con VirtualBox 2


Me encuentro en la necesidad de acceder mediante ssh a una máquina virtual, sobre VirtualBox, que tengo con Ubuntu en un equipo Windows. Esto me obliga a publicar el puerto 22 de esta máquina en la IP del Windows al estar configurada la red de VirtualBox con NAT.  Para configurar esto no hay de momento forma de hacerlo con la interfaz gráfica de Virtualbox, así que tendremos que recurrir a la línea de comandos.

¿Tenemos un servicio ssh en el Ubuntu?. 

  • Para identificar si está activo
~$  ps -ef | grep -i ssh
root 992 1 0 12:42 ? 00:00:00 /usr/sbin/sshd

  • Si no está activo, para arrancarlo
~$  sudo /etc/init.d/ssh start 
  • Si no existe para instalarlo
~$  sudo apt-get install openssh-server 

Publicamos el puerto 22 del servidor virtual en el real.

Para abrir un puerto al exterior de una máquina virtual, de nombre Ubuntu, tendremos que crear una regla , por ejemplo de nombre ssh, para abrir un puerto de la máquina virtual , puerto 22, para un protocolo ,  TCP,  en un puerto de la máquina real, el 22 (ojo que no esté ocupado). De esta manera cuando accedamos al puerto que le indiquemos de la máquina que tiene instalado el VirtualBox, estaremos accediendo al puerto indicado de la maquina virtual.

Para hacer esto tendremos que apagar la máquina virtual (apagarda, no pausada). Después ejecutaremos los siguientes comandos:

VBoxManage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP
VBoxManage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
VBoxManage setextradata "Ubuntu" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 22

Si nos fijamos en cada línea estamos configurando el dispositivo pcnet: es el dispositivo de red que esta usando la máquina virtual para emular una tarjeta de red del tipo que le hemos dicho en la configuración. Dependiendo de un tipo u otro, tendremos que poner una cadena u otra. Los posibles tipos que hay son los siguientes:

  • Intel Network Adapter: e1000
  • PCNet: pcnet

Se pueden ver en la configuración de la máquina virtual.

Para comprobar que se ha introducido bien podemos listar todas propiedades de la maquina virtual

VBoxManage getextradata Ubuntu enumerate
Compartir
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

2 ideas sobre “Abriendo puertos a de una máquina virtual con VirtualBox

    • Guillermo Conde

      Este post estaba escrito bajo el supuesto de que tenías andando el servicio de ssh y que tenías configurada la red de la máquina virtual con NAT.

      En las nuevas versiones de Virtualbox funciona bastante bien el modo bridge, así que te recomiendo que lo uses. Si no es posible … pues NAT. La diferencia fundamental es que con bridge publicas directamente la máquina virtual en tu red, con IP propia y te quitas de complicaciones. Con NAT lo que haces es publicar la máquina virutal con la IP del PC donde ejecutes Virtualbox y redireccionar determinados puertos específicos hacia la máquina virtual.

      Lo dicho, si estamos con NAT, se está ejecutando sshd y están redireccionados los puertos, lo que tendrías que hacer es saber la IP con la que se publicará el puerto ssh (con ipconfig o ifconfig, para windows y linux respectivamente, desde le servicor en que se ejecute Virtualbox, ojo a las configuraciones de los firewall). Lo siguiente es irte a otro terminal que tengas en la red que ve esa IP y ssh usuario@IP:puerto ( si omiter el usuario accederá con root y si omites el puerto accederá con el 22).

      Aquí la principal precaución que tienes que tener es la IP que escojas. Dentro de la red local será la del servidor de Virtual Box, en internet será la del router de salida siempre que le hayas dado acceso desde el firewall que tengas.