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:
Acepta corregir la GPT, y luego utiliza «resizepart» para aprovechar todo el espacio existente en el disco:
Sal de parted y utiliza resize2fs para ajustar el sistema de archivos:
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!