Instala y accede al ESCRITORIO REMOTO de tu VPS LINUX con XRDP
Hay ocaciones en las que es necesario poder acceder al ESCRITORIO REMOTO de tu VPS LINUX utilizando el protocolo RDP. Un ejemplo es si querés utilizar tu VPS con un ROBOT TRADING, en ese caso podrías instalar WINE e instalar una aplicación que realice esta tarea.
Pero primero es necesario instalar un escritorio en tu VPS LINUX. En este artículo te mostraré el modo de hacerlo en un servidor con UBUNTU 20.04 minimal y con pocos recursos.
El VPS a utilizar será el que ofrece de manera gratuita ORACLE CLOUD y que ya te conté la manera de poder tener una cuenta en ese servicio en este artículo.
Pero el procedimiento es totalmente válido para cualquier distribución de LINUX y cualquier servicio de VPS. Por lo que también podés utilizar el servidor casi gratis de GOOGLE CLOUD PLATFORM como te mostré en este otro apunte.
Índice de artículo
El protocolo RDP (Remote Desktop Protocol)
Protocolo de Escritorio Remoto es un protocolo propietario desarrollado por Microsoft que permite la comunicación en la ejecución de una aplicación entre una terminal (mostrando la información procesada que recibe del servidor) y un servidor Windows (recibiendo la información dada por el usuario en el terminal mediante el ratón o el teclado).
Funcionamiento
El modo de funcionamiento del protocolo es sencillo. La información gráfica que genera el servidor es convertida a un formato propio RDP y enviada a través de la red al terminal, que interpretará la información contenida en el paquete del protocolo para reconstruir la imagen a mostrar en la pantalla del terminal.
En cuanto a la introducción de órdenes en el terminal por parte del usuario, las teclas que pulse el usuario en el teclado del terminal así como los movimientos y pulsaciones de ratón son redirigidos al servidor, permitiendo el protocolo un cifrado de los mismos por motivos de seguridad.
El protocolo también permite que toda la información que intercambien cliente y servidor sea comprimida para un mejor rendimiento en las redes menos veloces.
Este servicio utiliza por defecto el puerto TCP 3389 en el servidor para recibir las peticiones.
Servicio XRDP
En este artículo utilizaremos el servidor XRDP que utiliza el protocolo RDP. Pero en este caso la conexión se realizará a un VPS LINUX con un entorno de escritorio instalado.
Escritorio liviano
En LINUX existen muchos entornos de escritorio. Los hay desde los más vistosos y pesados hasta los más livianos pero muy potentes en cuanto a prestaciones.
Cuando se hace referencia a un escritorio liviano se hace referencia a un entorno visual que consume muy poca memoria RAM y poco consumo de CPU.
Los más famosos son XFCE y LXDE ya que cumplen con todas las condiciones indicadas anteriormente. Sus prestaciones son muy potentes y no tienen nada que envidiar a otros escritorios más pesados.
Como es costumbre en Apuntes IT, vamos a utilizar el escritorio XFCE para instalarlo en un VPS LINUX de 1 CPU y 1 GB de RAM.
Si tenés un VPS con más recursos como por ejemplo 2CPU y 4GB de memoria vas a poder instalar un escritorio un poco mas pesado como puede ser GNOME, MATE, CINNAMON o KDE.
Preparando el VPS LINUX
Como se comentó, este procedimiento es válido para cualquier instancia VPS LINUX y los paquetes a instalar pueden variar en su comando o nombre de paquete ya que en este artículo se utilizará el Sistema Operativo UBUNTU 20.04 MINIMAL. Si estás utilizando una DISTRIBUCIÓN LINUX distinta vas a tener que utilizar los comandos de instalación correspondientes.
Una vez creada la instancia VPS con UBUNTU 20.04 MIMNIMAL en el proveedor que utilices lo primero que se debe hacer es asegurarse de tener el sistema en su última versión disponible realizando un upgrade como se muestra.
$ sudo apt update && sudo apt upgrade -y
Instalación de XFCE4
Lo siguiente es instalar el entorno de escritorio que hayas elegido para tu VPS. En este caso voy a instalar el Escritorio XFCE4 con los comando mostrados.
$ sudo apt install -y xfce4 desktop-base xfce4-terminal tango-icon-theme
En el proceso de instalación se nos preguntará el idioma del entorno, el idioma del teclado y el gestor de sesiones a utilizar. En este ejemplo voy a utilizar el administrador de ventanas Lightdm por ser mucho mas liviano que GDM3 ya que no necesita librerías extras de GNOME y consume muchos menos recursos.
Instalando XRDP
Una vez que el VPS tiene un entorno gráfico instalado se debe crear un servicio de Escritorio Remoto y en este caso se va a instalar el Servidor XRDP que permitirá acceder al entorno de escritorio del VPS a los usuarios permitidos.
Para instalar el servicio XRDP se debe ejecutar el comando mostrado a continuación.
$ sudo apt install xrdp
Luego hay que asegurarse de que el servicio XRDP se encuentra funcionando correctamente en el VPS con el siguiente comando.
$ sudo systemctl status xrdp
Si todo está funcionando como se espera el siguiente paso es agregar el usuario xrdp y agregarlo al grupo ssl-cert para que las sesiones gráficas remotas puedan utilizar los certificados generados por el VPS. Debes ejecutar el siguiente comando.
$ sudo adduser xrdp ssl-cert
En este punto ya estamos en condiciones de agregar usuarios para que puedan acceder por el servicio de Escritorio Remoto XRDP en tu VPS LINUX.
Configuración del firewall
Como ya se mostró en el artículo Como abrir puertos TCP y UDP en Oracle Cloud, en este caso debemos asegurarnos de que el puerto TCP 3389 esté abierto tanto en el firewall del proveedor VPS como en el mismo Sistema Operativo que tiene instalado el servidor.
Para este ejemplo debemos dirigirnos al panel de administración de Oracle Cloud y en la lista de seguridad de red se debe agregar el puerto TCP 3389 como permitido.
Pero también es necesario agregar la regla de IPTABLES teniendo en cuenta de no tener un coflicto con reglas ya funcionando.
Primero listamos las reglas actuales de la tabla INPUT con el comando mostrado.
$ sudo iptables -L INPUT
Luego se debe editar el archivo /etc/iptables/rules.v4 y agregar la regla que se muestra antes de cualquier otra regla que bloquee el acceso de paquetes a cualquier puerto.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3389 -j ACCEPT
Y por último se deben cargar las nuevas reglas en el servicio IPTABLES con este comando.
$ sudo iptables-restore < /etc/iptables/rules.v4
En el video relacionado a este artículo publicado en el Canal de YouTube se muestra en detalle este punto.
Usuarios con Escritorio Remoto
Para que un usuario del sistema pueda acceder al Escritorio Remoto se deben realizar algunas configuraciones.
Para empezar se debe asegurar que el usuario tenga configurada una contraseña para el inicio de sesión.
Si el usuario de acceso SSH del VPS accede con llaves ssh en vez de hacerlo con contraseña, como es el caso de Oracle Cloud, es necesario generar una contraseña de usuario con el siguiente comando.
$ passwd
Luego de ingresar la contraseña y confirmarla ya tenemos en condiciones al usuario ubuntu para la siguiente configuración.
Agregando otros usuarios
En lo personal no recomiendo darle acceso al Escritorio Remoto al usuario root o a cualquier otro usuario con permisos sudo ya que puede generar una brecha de seguridad en el VPS.
Es por esto que agregaremos un nuevo usuario que llamaremos remoto con el comando de abajo.
$ sudo adduser remoto
Le asignamos una contraseña y los siguientes datos pueden quedar en blanco.
Esto mismo lo haremos con la cantidad de usuarios que deseamos agregar al acceso de Escritorio Remoto.
Configurar XFCE4 en el perfil del usuario
Para que los usuarios con acceso al Escritorio Remoto puedan iniciar por primera vez su sesión de entorno gráfico es necesario configurar el nombre del programa que inicia el escritorio XFCE4.
Se debe crear el archivo .xsession en cada directorio home de usuario con el contenido xfce4-session. Se deben seguir estos comandos.
$ sudo echo xfce4-session >/home/remoto/.xsession $ sudo chown -R remoto:remoto /home/remoto/.xsession $ sudo chmod 664 /home/remoto/.xsession
Debes utilizar el nombre de usuario que estés configurando en cada caso.
Configurar XFCE4 en XRDP
El último paso es configurar el servidor XRDP para que inicie el escritorio XFCE4 cuando un usuario inicie sesión en el Escritorio Remoto.
Se debe editar el archivo /etc/xrdp/startwm.sh comentando la última línea y agregando startxfce4.
El final del archivo te debe quedar como lo siguiente.
... test -x /etc/X11/Xsession && exec /etc/X11/Xsession #exec /bin/sh /etc/X11/Xsession startxfce4
Luego de guardar los cambios en el archivo de configuración se debe reiniciar el servicio xrdp.
$ sudo systemctl restart xrdp
Accediendo al Escritorio Remoto
Una vez realizadas las tareas de configuración del servicio XRDP y de los usuarios que van a utilizar este servicio sólo resta acceder al Escritorio Remoto.
La principal ventaja de utilizar el protocolo RDP es que cualquier cliente de acceso remoto que utilice este protocolo puede ser utilizado para conectar al VPS LINUX.
Acceso RDP desde LINUX
Para poder acceder desde un sistema con kernel LINUX hay varios clientes compatibles con el protocolo RDP.
En este ejemplo utilizaré el cliente REMMINA ya que es un cliente que tiene muchas prestaciones y se encuentra disponible en los repositorios de todas las distribuciones LINUX.
Una vez iniciado el cliente simplemente indicamos la utilización del protocolo RDP y el número de IP del VPS.
Cuando se establece la conexión por primera vez se debe aceptar el certificado provisto por el VPS. Esto asegura una conexión cifrada de extremo a extremo tal como sucede en una conexión ssh.
Luego se presenta la pantalla de inicio de sesión del servidor XRDP donde simplemente debemos ingresar el nombre de usuario y la contraseña.
Si el usuario tiene permiso para iniciar una sesión de Escritorio Remoto en el VPS LINUX, se presentará el escritorio XFCE4 y todos los programas que tenga instalado el VPS.
Acceso RDP desde Windows
Si estás utilizando Windows en tu computadora no vas a tener problema ya que el protocolo RDP fue creado por Microsoft. Así que estos son los pasos que debes seguir para poder conectar desde Windows a un VPS LINUX.
Buscar la aplicación Escritorio Remoto o Remote Desktop.
Se debe indicar la IP del VPS donde se desea iniciar el Escritorio Remoto.
Se debe aceptar el certificado de la conexión establecida.
En la pantalla de acceso a la sesión de usuario se deben completar los datos solicitados.
Si el usuario tiene los permisos necesarios se inicia la sesión del Escritorio Remoto en el VPS LINUX mostrando el escritorio XFCE4.
Conclusión
A lo largo del artículo te mostré los beneficios que tiene la utilización del protocolo RDP como servicio de conexión remota para entornos gráficos.
También te mostré la gran potencia que tiene la utilización de un escritorio liviano como XFCE4 en un servidor VPS de pocos recursos.
El escritorio que instales debe ser liviano para no consumir recursos que van a necesitar los servicios principales de tu VPS como por ejemplo un servidor web o una base de datos. Debes tener en cuenta esto para no perder potencia en tu VPS por el solo hecho de acceder al un entorno gráfico que en la mayoría de las veces no es necesario.
Existen otros servidores de acceso al escritorio como puede ser RealVNC o NoMachine (NX), pero XRDP es el indicado en cuanto a gestión de recursos y el acceso por el protocolo RDP que se encuentra en casi todos los clientes de acceso remoto.
Como es costumbre en este blog, te dejo el video dedicado a este tema donde podrás ver todo el procedimiento y datos extras que no encontrarás en este artículo.
Si el artículo te fue de utilidad o conoces a alguien que le pueda ser útil, compartilo en todas tus redes sociales. Invitá a tus contactos a seguir este blog para que esta comunidad comparta conocimiento.
Seguime en Twitter y en Instagram con la cuenta ApuntesIT. Visitá el Canal de Youtube, suscribite y activá la campana para recibir las notificaciones de nuevos videos.
Hasta luego!
Trabajando desde el año 1990 en el mercado de la tecnología. Técnico en Electrónica. Administrador de Sistemas. Administrador de Redes. Técnico en telecomunicaciones. Técnico de plataforma satelital. Incursiono en el Software Libre desde mediados del 1997. Desde entonces utilicé varias distribuciones GNU/Linux comenzando con un RedHat 5.0
Formé parte del Core Team y miembro del grupo de desarrollo del Proyecto UTUTO.
Cómo se podría hacer esto con otro entorno gráfico? hay alguna guía? por ejemplo con un gestor de ventanas como bspwm?
Yo uso mobaxterm para la conexión al RDP y no me sale por ningún lado lo del certificado, me conecta de todas formas