Instalación de Ubuntu Cloud como Escritorio Remoto con RDP en un entorno Openstack sin conexión

En este tutorial, desplegaremos un host Linux con RDP que sirva de Escritorio Remoto en un entorno de acceso limitado (sin conectividad a Internet). Un requisito adicional es que varios usuarios puedan compartir las mismas credenciales en este host.

Para ello, utilizaremos dos instancias duplicadas de servidores Ubuntu Cloud, una en línea y otra sin conexión, de modo que los paquetes correctos puedan desplegarse en el servidor sin conexión. Además, se ha elegido el escritorio Xfce4 por su capacidad de abrir varias sesiones para un mismo usuario. Hasta el momento en que se escribió el tutorial, Gnome no contaba con esta característica.

Instalación sin conexión

Para permitir la instalación en un sistema sin conexión, desplegaremos un sistema idéntico en un VirtualBox online, utilizando la siguiente secuencia de comandos para cada paquete:

En el sistema online

sudo apt-get install --download-only <package list>

Copia los paquetes de /var/cache/apt/archives online al PC (utilizando un cliente sftp o la carpeta compartida de VirtualBox) y del PC al sistema offline. Luego, en ambos sistemas:

dpkg -i /var/cache/apt/archives/*.deb

Por último, limpia los archivos apt:

apt-get clean

Descarga la imagen de Ubuntu en la nube

Utiliza este enlace. Para OpenStack, usaremos la extensión img, equivalente a qcow2. Para VirtualBox, necesitamos el ova, que ya contiene un archivo de disco vmdk.

Crea las dos máquinas virtuales

En OpenStack:

Sube la imagen a la mirada:

glance image-create --name "Ubuntu Cloud image" --file ubuntu-18.04-server-cloudimg-amd64.img --is-public False --container-format bare --disk-format qcow2

Crea una plantilla en caliente, aquí tienes un ejemplo con una IP fija y espacio de disco adicional:

heat_template_version: 2018-04-30
description: Remote Desktop deployment

resources:

port_vm:
type: OS::Neutron::Port
properties:
network: <network name>
fixed_ips:
- subnet: <subnet name>
ip_address: <ip address>

server:
type: OS::Nova::Server
properties:
name: <instance name>
flavor: <flavor name>
availability_zone: <zone name>
networks:
- port: { get_resource: port_vm }

new_volume:
type: OS::Cinder::Volume
properties:
size: <disk space in MB>

volume_attachment:
type: OS::Cinder::VolumeAttachment
properties:
volume_id: { get_resource: new_volume }
instance_uuid: { get_resource: server }

Crea la pila, la instancia se lanza automáticamente:

heat stack-create -f <FILE> -e <FILE> <STACK_NAME>

Conéctate a la consola, asegúrate de que la VM arranca con éxito. Reinicia con Ctrl-Alt Supr y pulsa Mayúsculas-Izquierda para acceder al modo de recuperación y cambiar la contraseña de root.

En VirtualBox:

Importa el archivo ova como un nuevo dispositivo. Asegúrate de activar un puerto serie, puede que se quede desconectado, se utiliza para saltarse uno de los pasos durante la inicialización de la nube. Además, asegúrate de seleccionar el adaptador puente de red y asociarlo a la interfaz de red del host que tenga acceso a Internet.

Arranca con Mayúsculas-Izquierda pulsada y accede al modo de recuperación GRUB. Allí puedes cambiar la contraseña de root por la que prefieras. Esta vez arranca e inicia sesión normalmente.

Ejecuta parted para corregir los datos de la partición:

Partición mediante parted

Acepta corregir la GPT, y luego utiliza «resizepart» para aprovechar todo el espacio existente en el disco:

Redimensionar la partición

Sal de parted y utiliza resize2fs para ajustar el sistema de archivos:

Dejar de fumar

Ahora df -h debería mostrar 10G disponibles.

Comprueba la conectividad IP

Aunque Openstack puede proporcionar la dirección IP correcta mediante DHCP, configuraremos una estática en ambos entornos. Crea un archivo con extensión yaml en /etc/netplan, establece la dirección IP y la puerta de enlace en consecuencia:

network:
       version: 2
       renderer: networkd
       ethernets:
               enp0s3:
                       dhcp4: no
                       addresses: [192.168.1.100/24]
                       gateway4: 192.168.1.1
                       nameservers:
                               addresses: [192.168.1.1]

Aplica la nueva configuración:

netplan apply

Ahora la conectividad debería funcionar desde la VM a la puerta de enlace y desde tu PC a ambas VM.

En cuanto la conectividad a Internet se produzca en la VM de VirtualBox, asegúrate de actualizar apt:

apt-get update

Ten en cuenta que, si optas por instalar Gnome en lugar del escritorio Xfce4, tendrás que sustituir networkd por NetworkManager en cuanto termines esta instalación.

Configurar SSH

Vamos a habilitar el acceso ssh de root. Edita el archivo /etc/ssh/sshd_config por defecto:

  • Habilita las 3 HostKeys
  • Establece PermitRootLogin a yes
  • Desactiva la autenticación basada en el host
  • Habilita la contraseña de texto claro (PasswordAuthentication sí, PermitEmptyPasswords no)

Comprueba también en /etc/ssh la presencia de archivos hostkey, en VirtualBox suelen faltar. Genera unas nuevas con ssh-keygen:

ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ""
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N ""
ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -t ed25519 -N ""

Reinicia el servicio:

service sshd restart

Ahora debes poder hacer ssh a las nuevas máquinas virtuales. Si lo prefieres, puedes generar un par de claves privadas/públicas para sustituir la contraseña en texto claro.

Instalar Xfce4

Estos son los pasos para instalar el escritorio xfce4 en Ubuntu.

En VirtualBox:

apt-get update
apt-get install --download-only xfce4 xfce4-terminal gnome-icon-theme-full tango-icon-theme
dpkg -i /var/cache/apt/archives/*.deb

Copia los paquetes deb de /var/cache/apt/archives a la VM de Openstack. No olvides limpiar /var/cache/apt/archives.

En Openstack:

dpkg -i /var/cache/apt/archives/*.deb
apt-get clean

A continuación, para las dos VMs añade un nuevo usuario ubuntu y añádelo al grupo sudo:

adduser ubuntu
usermod -aG sudo ubuntu

Haz clic en ENTER para todas las preguntas y ya está. El directorio de inicio se añade automáticamente.

Instala el XRDP

Cambia el usuario a ubuntu para que XRDP realice la configuración necesaria en /home/ubuntu.

En VirtualBox:

sudo apt-get install --download-only xrdp
sudo dpkg -i /var/cache/apt/archives/*.deb

Copia los paquetes deb de /var/cache/apt/archives a la VM de Openstack. Limpia /var/cache/apt/archivos.

En Openstack:

sudo dpkg -i /var/cache/apt/archives/*.deb
sudo apt-get clean

Configura XRDP en ambos:

Edita /etc/xrdp/sesman.ini y establece Policy=UBDC. Esto permite múltiples sesiones con el mismo nombre de usuario.

Edita /etc/xrdp/startwm.sh, añadiendo startxfce4 al final:

#!/bin/sh

if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4

Reinicia el servicio XRDP:

sudo service xrdp restart

Instala los navegadores web

Es necesario añadir los navegadores web a Xfce4. Busca Google Chrome deb en Internet e instálalo con dpkg.

Puedes obtener Firefox directamente de los repositorios de Ubuntu.

En VirtualBox:

sudo apt-get install --download-only firefox
sudo dpkg -i /var/cache/apt/archives/*.deb

Copia los paquetes deb de /var/cache/apt/archives a la VM de Openstack. Limpia /var/cache/apt/archives.

En Openstack:

sudo dpkg -i /var/cache/apt/archives/*.deb
sudo apt-get clean

Añade accesos directos para cada navegador en la barra de tareas y/o en el escritorio.

Y ya está. Abre varias sesiones RDP al servidor y comprueba que todo funciona.

¡Saludos!

También te podría gustar...