lunes, 13 de septiembre de 2010

Conectar por RDP a máquinas virtuales con Virtual Box 3.2.8 en Ubuntu 10.04.1

ACTUALIZACIÓN: 14 de Sep de 2010: He actualizado el artículo explicando un poco como conectar por la IP de las MV en vez del servidor VRDP. Por si a alguien le interesa también esta manera de conexión.

Para conectar a máquinas virtuales (MV) VirtualBox mediante el protocolo VRDP o Virtual Remote Desktop Protocol debemos tener en cuenta diferentes cuestiones.

VirtualBox dispone de un servidor VRDP. Este servidor puede usarse para conectarse desde otro ordenador a la máquina virtual mediante un cliente RDP. Yo tengo VirtualBox instalado en un Ubuntu 10.04.1.

Lo primero a tener en cuenta es que cuando conectamos, la dirección IP a conectar es la del servidor VRDP no la de la MV. Esto implica que necesitamos asignar a cada MV un puerto. Otra forma sería instalar un servidor RDP en la MV. Entonces si se podría conectar a la MV por su IP pero implica un servicio más en cada MV.

Lo segundo es el método de autenticación que vamos a usar. Tenemos varios:

  • Nulo (null): Indica que cualquier cliente RDP podrá conectar a la MV sin usuario y contraseña. Muy inseguro pero bueno para probar.
  • Externo (external): Indica que Virtual Box usará un método externo de autenticación. Para ello usará una biblioteca llamada VRDPAuth. Este método permite que nos autentiquemos con los usuarios del servidor VirtualBox, mediante PAM. No usaremos usuarios de la MV para la conexión sino un usuario del sistema servidor (anfitrión).
  • Huésped (guest): Es un método experimental que se usa mediante las guest-additions así que no lo comentaré porque no se recomienda el uso.

Y, por último, debemos tener en cuenta si arrancamos las MVs desde GUI o en modo Headless.

  • En modo GUI, deberemos habilitar vrdp en la configuración de la MV ya que no viene habilitado por defecto. Vamos a Pantalla -> Pantalla Remota -> Habilitar Servidor y le deberemos poner un puerto a usar. permitir conexiones múltiples o no y el método de autenticación. El puerto 3389 y la autenticación Nulo son los que vienen por defecto.
  • En modo Headless, sin gui para manejar la MV, el servidor VRDP está habilitado por defecto al arrancar la MV. El puerto por defecto es 3389.

    • Para darle un puerto específico debemos añadir la opción --vrdpport numpuerto.
    • Para habilitar múltiples conexiones --vrdpmulticon on
    • Para elegir el método de autenticación --vrdpauthtype null|external|guest.

Para conectar a las MVs hay que usar un cliente de RDP.

  • En Windows 7/2008 podemos ejecutar mstsc.exe y dar los datos necesarios.
  • En GNU\Linux K/Ubuntu tenemos Krdc para KDE y Gnome-RDP para Gnome.

Para conectar a las MVs por su IP específica hay que instalar dentro de cada MV un servidor. Entonces podremos conectar de la forma direcciónipmv:puertordp que por defecto es 3389.

  • En GNU\Linux tenemos el servidor rdp llamado xrdp. sudo aptitude install xrdp.
  • En Ms Windows debemos habilitar la conexión a escritorio remoto. En Ms Windows 2008 R2 es botón derecho del ratón en Equipo --> Propiedades --> Configuración Avanzada del Sistema --> Pestaña Acceso Remoto --> Permitir conexiones desde equipos que ejecuten cualquier versión... Esto habilitará el firewall para el puerto 3389.

Ejemplo de conexión mediante el servidor VRDP de Oracle VirtualBox y el cliente Krdc

Tengo instalado Vbox 3.2.8 en un Kubuntu 32 bits con dirección IP 192.168.1.35, por ejemplo. Creo dos MV con Ubuntu Desktop (Gnome) una llamada ubudesk00 y otra ubudesk01 que ya están instalados. Vamos a arrancar las 2 MVs en modo headless y cada una tendrá su propio puerto para la conexión. Después conectaremos con Krdc a cada una.

Lo primero es cambiar las opciones por defecto de las MVs a lo que quiero. La MV tiene que estar parada. Se pueden cambiar algunas opciones en caliente como el puerto pero no otras como el método de autenticación.

$ VBoxManage modifyvm ubudesk00 --vrdpport 50000 --vrdpmulticon on --vrdpauthtype null
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

$ VBoxManage modifyvm ubudesk01 --vrdpport 50001 --vrdpmulticon on --vrdpauthtype external
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

A ubudesk00 le he puesto el puerto 50000 y método null y a ubudesk01 le he puesto el puerto 50001 y el método external.

Después arranco las MVs en una terminal en modo headless de la siguiente forma:

$ VBoxManage startvm ubudesk00 --type vrdp
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

Waiting for the VM to power on...
VM has been successfully started.
$ VBoxManage startvm ubudesk01 --type vrdp
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

Waiting for the VM to power on...
VM has been successfully started.

Si tenéis sonido oireis los tamborcitos típicos de Ubuntu cuando arranca, 2 veces, pero no veréis ninguna pantalla jeje. También podéis usar el script onoffvbox que hice para arrancarlas :-)

http://yoadminsis.blogspot.com/2010/09/onoffvbox-script-para-arrancar-o-parar.html

Para conectar a ubudesk00 vamos a Menu KDE (inicio) en el cuadro de texto "buscar" ponemos krdc y damos click a la aplicación. Ponemos la IP del servidor y el puerto vrdp y le damos a conectar (fijaros tener rdp y no vnc). Entonces ponemos los datos de la conexión. Cuando nos pida un nombre, será el nombre de usuario. Como esta MV tiene el método null pues le doy un nombre de usuario cualquiera, ubudesk00, por ejemplo. Después pide contraseña, pero la dejamos en blanco y como es el método es null conectará sin problema. Vemos las pantallas siguientes:





Para la MV ubudesk01. Damos a Nueva conexión (debajo del menú Archivo) Los pasos son los mismos pero cambiamos el puerto a 50001 (la IP es la misma ya que es el servidor VBox) y cuando nos pida el nombre pondremos el nombre de un usuario del sistema anfitrión y la contraseña, ya que tiene el método de autenticación external. Sino no nos dejará conectar como pasa con ubudesk00.








Y listo, si cerramos las conexiones y el cliente krdc las MVs seguirán arrancadas pero no tendremos pantallas GUI molestando, a no ser que las hayamos apagado desde dentro de las MVs claro.

NOTA: Hay gente que ha tenido problemas con el método de autenticación external con Virtual Box instalado en Ubuntu.  Yo no lo he tenido pero por si tenéis problemas podéis usar lo siguiente.

Editais el fichero /etc/pam.d/common-account del servidor donde está instalado VirtualBox y añadís la linea

account required pam_unix.so broken_shadow

quedando así

$ sudo vim /etc/pam.d/common-account
...
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account required                        pam_permit.so
account required                       pam_unix.so broken_shadow
...
Related Posts with Thumbnails