Cómo acceder a la consola gráfica de una máquina virtual KVM en un host sin entorno gráfico

Valoración del Usuario:  / 1
MaloBueno 

Cuando se instala un host de máquinas virtuales generalmente se incluye la aplicación "virt-manager" la cual permite gestionar máquinas virtuales desde un entorno gráfico amigable. Esta aplicación simplifica la creación de máquinas virtuales y permite el acceso a los entornos gráficos de las mismas. Sin embargo, cuando se hace un uso serio de KVM en el mundo real, un host de máquinas virtuales se instala sin entorno gráfico para reducir la sobrecarga en el host y permitir alojar un mayor número de máquinas virtuales.

Pero, si el host no tiene entorno gráfico, ¿cómo es posible acceder a la consola gráfica de una máquina virtual, por ejemplo para instalarle un sistema operativo?

Existen diferentes alternativas, el artículo Administrar máquinas virtuales KVM de forma remota explica cómo utilizar la herramienta virt-manager para administrar un host de máquinas virtuales desde otro host remoto cliente. Por otro lado, los artículos Utilizar SPICE en máquinas virtuales KVM y Acceso remoto a máquinas virtuales KVM utilizando el cliente SPICE explican cómo utilizar SPICE, el protocolo desarrollado por Red Hat para conectarse a una máquina virtuales QEMU de una forma eficiente.

Sin embargo, la alternativa más rápida y sencilla es utilizar VNC. Por defecto, todas las máquinas virtuales KVM implementan su interfaz gráfica mediante un servidor VNC por hardware. VNC (Virtual Network Computing) es un sistema para compartir escritorios gráficos que utiliza el protocolo RFB (Remote Frame Buffer) para controlar otra computadora de forma remota. Transmite los eventos de teclado y mouse de una computadora cliente a otra servidor, y las actualizaciones gráficas desde el servidor al cliente, sobre una red. Es muy similar al protocolo RDP (Remote Desktop) de Microsoft.

Por lo tanto, la consola gráfica de una máquinas virtual a la cual se accede desde la herramienta virt-manager es en realidad un cliente VNC. Por defecto el acceso al display VNC de una máquina virtual está restringido a localhost. Este artículo explica como configurar una máquina virtual para permitir el acceso al display VNC desde un host remoto, respondiendo de esta forma a la cuestión de cómo acceder a la consola gráfica de una máquina virtual en un host sin entorno gráfico.

Down to business

Método 1: Desde la consola del host

Los archivos de configuración de las máquinas virtuales KVM se encuentran en el directorio /etc/libvirt/qemu, por ejemplo, para la máquina (dominio en la jerga KVM) "server01" editar el archivo de configuración /etc/libvirt/qemu/server01.xml:

# vi /etc/libvirt/qemu/server01.xml

Dentro de la sección <devices> editar el hardware gráfico VNC (o agregar nuevo), por ejemplo:

<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='1234'>

Las opciones port='-1' autoport='yes' se utilizan para que el host asigne automáticamente un puerto para el servidor VNC, la opción listen='0.0.0.0' se utiliza para que escuche en todas las redes disponibles (lo que permite acceder a la consola desde un host remoto). Por último reemplazar el password ('1234') por uno más fuerte, ya que con la opción listen='0.0.0.0' presenta un alto riesgo en cuanto a seguridad. Una mejor configuración es indicar que escuche sólo en una dirección IP de una red privada, por ejemplo listen='192.168.x.y'.

Por último es necesario reiniciar libvirtd y la máquina virtual:

# /etc/init.d/libvirtd restart
# virsh shutdown server01
# virsh start server01

Método 2: Utilizando la herramienta virt-manager

El artículo Administrar máquinas virtuales KVM de forma remota explica cómo utilizar la herramienta virt-manager para administrar un host de máquinas virtuales remoto.

Desde una computadora cliente con virt-manager instalado conectarse al host y editar la configuración de la máquina virtual:

Presionar "Add Hardware" para agregar un nuevo display VNC, se debe indicar que escuche en todas las interfaces públicas e ingresar un password:

Al aplicar los cambios el sistema indica que no se puede agregar el hardware con la máquina en funcionamiento, por lo que se verán reflejados luego de reiniciar:

Presionar "Yes".

Prueba de conexión remota

Desde una computadora cliente (puede ser cualquier Sistema Operativo) utilizar un cliente VNC para conectarse a la consola de la máquina virtual. Para GNU/Linux existen infinidad de clientes VNC, por ejemplo: vncviewer, tsclient, remmina, vinagre, krdc, etc.

Para Windows también existen muchas alternativas free y open-source, como por ejemplo: "TightVNC", "UltraVNC", "RealVNC" y otros.

Para conectarse se necesita conocer la IP del host de máquinas virtuales (puede ser cualquiera o una en particular, dependiendo de cómo se configuró el hardware VNC en la máquina virtual), el puerto y la contraseña.

Cuando se utiliza la asignación automática de puertos, antes de conectar se debe determinar qué puerto tiene asignado el servidor VNC de la máquina virtual, para ello utilizar el comando virsh vncdisplay, por ejemplo:

# virsh vncdisplay server01
:3

Los puertos que permite KVM están restringidos entre el 5900 y 5999. Entonces, si la salida del comando anterior es :3, significa que el puerto en el que escucha el servidor VNC es el 5903.

Suscribirse

    Registrate para recibir las novedades y artículos por correo electrónico.

Linuxito en G+