Escritorio remoto de Ubuntu (GUI)
Ubuntu Server no incluye una interfaz gráfica de forma predeterminada. Sin embargo, puedes instalar una y conectarte a ella de forma remota mediante VNC o RDP. Esta guía explica ambos métodos.
No expongas los puertos 5901 (VNC) o 3389 (RDP) directamente a Internet. Utiliza un túnel SSH, WireGuard u otra solución VPN para proteger la conexión. Si debes permitir el paso de estos puertos a través del cortafuegos, restringe el acceso únicamente a rangos de IP de confianza.
Para la mayoría de los servidores Ubuntu en producción, la combinación recomendada es: el entorno de escritorio Xfce, xrdp para el acceso remoto y WireGuard o un túnel SSH para una conectividad segura.
Lo que necesitas
- Servidor Ubuntu (20.04 / 22.04 / 24.04)
- Acceso de root o sudo
- Un ordenador cliente (Windows o macOS) desde el que conectarse
Instalar un entorno de escritorio
Actualizar la lista de paquetes:
apt update && apt upgrade -y
Instalar el entorno de escritorio GNOME mínimo:
apt install ubuntu-desktop-minimal -y
Para servidores de producción, se suele recomendar Xfce, ya que consume menos recursos y funciona de forma más fiable a través de VNC y xrdp:
apt install xfce4 xfce4-goodies -y
Una vez finalizada la instalación, configura el destino de arranque predeterminado en modo gráfico y reinicia:
systemctl set-default graphical.target reboot
El comando `systemctl set-default graphical.target` cambia de forma permanente el modo de arranque predeterminado, de modo que el entorno gráfico se inicia automáticamente tras cada reinicio. En un servidor sin pantalla, en el que solo se necesita acceso remoto al escritorio, puedes saltarte este paso y simplemente reiniciar.
Opción 1. Conectarse a través de VNC
VNC (Virtual Network Computing) te permite ver y controlar el escritorio de forma remota. En esta sección se utiliza TigerVNC.
Instalar el servidor TigerVNC
apt install tigervnc-standalone-server tigervnc-common -y
Crear un usuario de VNC
Ejecuta VNC como usuario no root. Crea uno si aún no tienes ninguno:
adduser vncuser
No añadas el usuario de VNC al grupo sudo. Si un atacante consigue acceder a la sesión de VNC, el acceso a sudo le daría control total sobre el servidor.
Cambia a ese usuario:
su - vncuser
Establecer una contraseña de VNC
vncpasswd
Introduce y confirma una contraseña. Cuando se te pregunte «¿Deseas introducir una contraseña de solo lectura?», introduce n.
VNC requiere un backend de Xorg. En Ubuntu 24.04, GNOME se ejecuta en Wayland de forma predeterminada. Si tienes pensado utilizar VNC con GNOME, desactiva primero Wayland tal y como se describe en la sección sobre xrdp más abajo (WaylandEnable=false en /etc/gdm3/custom.conf). Si no lo haces, es posible que te aparezca una pantalla en negro.
En Ubuntu 24.04, es posible que dbus-launch no esté instalado de forma predeterminada. Si aparece el error «comando no encontrado» al iniciar la sesión de VNC, instálalo primero: apt install dbus-x11 -y
Configurar la sesión VNC
Crea el directorio de configuración y el archivo de inicio:
mkdir -p ~/.vnc nano ~/.vnc/xstartup
Pega lo siguiente:
#!/bin/bash export XDG_SESSION_TYPE=x11 export GNOME_SHELL_SESSION_MODE=ubuntu unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR exec dbus-launch --exit-with-session gnome-session --session=ubuntu
Si has instalado Xfce en lugar de GNOME, sustituye la última línea por: exec startxfce4
Haz que el archivo sea ejecutable:
chmod +x ~/.vnc/xstartup
Inicia el servidor VNC
vncserver :1 -geometry 1920x1080 -depth 24
Esto inicia una sesión VNC en la pantalla :1 (puerto 5901). La pantalla :2 utilizaría el puerto 5902, y así sucesivamente.
Para detener el servidor:
vncserver -kill :1
Abre el puerto del cortafuegos
ufw allow 5901/tcp
Si es posible, restringe el acceso a un rango de IP específico en lugar de permitir todas las fuentes: ufw allow from 192.168.1.0/24 to any port 5901 proto tcp
Conéctate desde Windows
Descarga e instala TightVNC o RealVNC Viewer.
Abre el cliente e introduce: tu-ip-del-servidor:5901

Introduce la contraseña de VNC cuando se te solicite. Una vez conectado, verás el escritorio remoto:

Conectarse desde macOS
macOS incluye un cliente VNC integrado. Abre el Finder, pulsa Cmd+K e introduce:
vnc://your-server-ip:5901
Introduce la contraseña cuando se te solicite.
El tráfico VNC no está cifrado de forma predeterminada. Canaliza la conexión a través de SSH: ssh -L 5901:localhost:5901 user@tu-ip-del-servidor; a continuación, conéctate a localhost:5901 desde tu cliente VNC.
Opción 2. Conectarse a través de RDP
RDP (Protocolo de Escritorio Remoto) es el protocolo estándar utilizado por el Escritorio Remoto de Windows. En Ubuntu, lo proporciona el paquete xrdp.
Las sesiones de GNOME a través de xrdp pueden resultar inestables en algunas versiones de Ubuntu, especialmente cuando Wayland está activado. Xfce suele ofrecer una experiencia de escritorio remoto más fiable.
Desactivar Wayland
xrdp requiere un backend Xorg. Abre el archivo de configuración de GDM:
nano /etc/gdm3/custom.conf
Busca la línea #WaylandEnable=false, elimina el comentario y guarda el archivo:
WaylandEnable=false
Instalar xrdp
apt install xrdp -y
Activa e inicia el servicio:
systemctl enable --now xrdp
Añade el usuario xrdp al grupo ssl-cert
adduser xrdp ssl-cert
Configura el archivo de inicio de sesión
Abre /etc/xrdp/startwm.sh y añade las siguientes líneas antes de la última línea «exec »:
export XDG_SESSION_TYPE=x11 export GNOME_SHELL_SESSION_MODE=ubuntu unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR
Abre el puerto del cortafuegos
ufw allow 3389/tcp
Si es posible, restringe el acceso a un rango de IP específico: ufw allow from 192.168.1.0/24 to any port 3389 proto tcp
Reinicia xrdp
systemctl restart xrdp
Conéctate desde Windows
Pulsa Win+R, escribe mstsc y pulsa Intro. Introduce la dirección IP de tu servidor y haz clic en «Conectar».

En la pantalla de inicio de sesión de xrdp, deja la sesión como Xorg e introduce tu nombre de usuario y contraseña de Ubuntu:

Tras iniciar sesión, aparecerá el escritorio remoto:

Conéctate desde macOS
Instala Microsoft Remote Desktop desde la App Store.
Haz clic en «Añadir PC» e introduce la dirección IP de tu servidor.
Inicia sesión con tu nombre de usuario y contraseña de Ubuntu.
Comparación: VNC frente a RDP
| VNC | RDP | |
|---|---|---|
| Protocolo | Estándar abierto | Microsoft (implementación de código abierto a través de xrdp) |
| Cliente de Windows | Se requiere software de terceros | Integrado (mstsc) |
| Cliente de macOS | Integrado (Finder) | Microsoft Remote Desktop (App Store) |
| Cifrado | Ninguno por defecto (utiliza túnel SSH) | TLS (gestionado por xrdp) |
| Rendimiento | Moderado | En general, más fluido |
| Compatibilidad con múltiples usuarios | Limitado | Mejor |
Solución de problemas
Pantalla en negro tras iniciar sesión con RDP: asegúrate de que las variables de entorno necesarias se hayan añadido a /etc/xrdp/startwm.sh tal y como se ha descrito anteriormente, y de que Wayland esté desactivado en /etc/gdm3/custom.conf. A continuación, reinicia xrdp: systemctl restart xrdp
Conexión VNC rechazada: comprueba que el servidor VNC esté en ejecución: vncserver -list. Asegúrate de que el puerto 5901 esté abierto en el cortafuegos.
La sesión VNC no se inicia: cierra la sesión y borra los archivos de bloqueo; a continuación, reinicia:
vncserver -kill :1 rm -f ~/.vnc/*.log ~/.vnc/*.pid vncserver :1
Se interrumpe la conexión o aparece una pantalla gris tras introducir la contraseña en xrdp: crea o edita el archivo ~/.xsessionrc del usuario y añade:
export XDG_SESSION_TYPE=x11
Asegúrate también de que el usuario no haya iniciado sesión en una sesión de escritorio local al mismo tiempo: cierra la sesión local antes de conectarte a través de xrdp.
Error de autenticación en xrdp: asegúrate de que inicias sesión con un usuario y una contraseña válidos del sistema Ubuntu, no con la contraseña de VNC.
xrdp se conecta pero se desconecta inmediatamente: comprueba el estado de ambos servicios:
systemctl status xrdp systemctl status xrdp-sesman
No se puede iniciar GNOME a través de VNC: en Ubuntu 24.04, es posible que tengas que instalar el paquete xorg por separado: apt install xorg -y