Desktop remoto Ubuntu (GUI)
Ubuntu Server non include un'interfaccia grafica per impostazione predefinita. Tuttavia, è possibile installarne una e connettersi ad essa da remoto tramite VNC o RDP. Questa guida illustra entrambi i metodi.
Non esponete le porte 5901 (VNC) o 3389 (RDP) direttamente a internet. Utilizzate un tunnel SSH, WireGuard o un'altra soluzione VPN per proteggere la connessione. Se dovete consentire queste porte attraverso il firewall, limitate l'accesso solo a intervalli IP affidabili.
Per la maggior parte dei server Ubuntu in produzione, la combinazione consigliata è: ambiente desktop Xfce, xrdp per l'accesso remoto e WireGuard o un tunnel SSH per una connettività sicura.
Cosa vi serve
- Server Ubuntu (20.04 / 22.04 / 24.04)
- Accesso root o sudo
- Un computer client (Windows o macOS) da cui connettersi
Installazione di un ambiente desktop
Aggiornate l'elenco dei pacchetti:
apt update && apt upgrade -y
Installate il desktop GNOME minimale:
apt install ubuntu-desktop-minimal -y
Per i server in produzione, si consiglia generalmente Xfce: utilizza meno risorse e funziona in modo più affidabile con VNC e xrdp:
apt install xfce4 xfce4-goodies -y
Una volta completata l'installazione, impostate la modalità grafica come target di avvio predefinito e riavviate:
systemctl set-default graphical.target reboot
Il comando systemctl set-default graphical.target modifica in modo permanente la modalità di avvio predefinita, in modo che l'ambiente grafico si avvii automaticamente dopo ogni riavvio. Su un server headless, in cui è necessario solo l'accesso al desktop remoto, potete saltare questo passaggio e semplicemente riavviare.
Opzione 1. Connessione tramite VNC
VNC (Virtual Network Computing) consente di visualizzare e controllare il desktop da remoto. Questa sezione utilizza TigerVNC.
Installazione del server TigerVNC
apt install tigervnc-standalone-server tigervnc-common -y
Creazione di un utente VNC
Eseguite VNC come utente non root. Createne uno se non ne avete già uno:
adduser vncuser
Non aggiungete l'utente VNC al gruppo sudo. Se un aggressore ottenesse l'accesso alla sessione VNC, l'accesso sudo gli darebbe il pieno controllo del server.
Passate a quell'utente:
su - vncuser
Impostazione di una password VNC
vncpasswd
Inserite e confermate una password. Quando viene chiesto "Would you like to enter a view-only password?", digitate n.
VNC richiede un backend Xorg. Su Ubuntu 24.04, GNOME utilizza Wayland per impostazione predefinita. Se intendete usare VNC con GNOME, disattivate prima Wayland come descritto nella sezione xrdp più sotto (WaylandEnable=false in /etc/gdm3/custom.conf). Senza questa modifica, potreste ottenere una schermata nera.
Su Ubuntu 24.04, dbus-launch potrebbe non essere installato per impostazione predefinita. Se ricevete un errore "command not found" all'avvio della sessione VNC, installatelo prima: apt install dbus-x11 -y
Configurazione della sessione VNC
Create la directory di configurazione e il file di avvio:
mkdir -p ~/.vnc nano ~/.vnc/xstartup
Incollate quanto segue:
#!/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
Se avete installato Xfce anziché GNOME, sostituite l'ultima riga con: exec startxfce4
Rendete il file eseguibile:
chmod +x ~/.vnc/xstartup
Avvio del server VNC
vncserver :1 -geometry 1920x1080 -depth 24
Questo avvia una sessione VNC sul display :1 (porta 5901). Il display :2 userebbe la porta 5902, e così via.
Per arrestare il server:
vncserver -kill :1
Apertura della porta nel firewall
ufw allow 5901/tcp
Se possibile, limitate l'accesso a un intervallo IP specifico anziché consentirlo a tutte le origini: ufw allow from 192.168.1.0/24 to any port 5901 proto tcp
Connessione da Windows
Scaricate e installate TightVNC o RealVNC Viewer.
Aprite il client e digitate: your-server-ip:5901
[IMAGE: vnc-connect-address.png — RealVNC Viewer con l'indirizzo del server inserito]
Quando richiesto, inserite la password VNC. Una volta connessi, vedrete il desktop remoto:
[IMAGE: vnc-xfce-desktop.png — il desktop remoto mostrato tramite VNC]
Connessione da macOS
macOS include un client VNC integrato. Aprite Finder, premete Cmd+K e digitate:
vnc://your-server-ip:5901
Quando richiesto, inserite la password.
Il traffico VNC non è crittografato per impostazione predefinita. Incapsulate la connessione tramite SSH: ssh -L 5901:localhost:5901 user@your-server-ip, quindi connettetevi a localhost:5901 dal vostro client VNC.
Opzione 2. Connessione tramite RDP
RDP (Remote Desktop Protocol) è il protocollo standard utilizzato da Connessione desktop remoto di Windows. Su Ubuntu è fornito dal pacchetto xrdp.
Le sessioni GNOME su xrdp possono essere instabili su alcune versioni di Ubuntu, in particolare quando Wayland è abilitato. Xfce offre generalmente un'esperienza di desktop remoto più affidabile.
Disattivazione di Wayland
xrdp richiede un backend Xorg. Aprite il file di configurazione di GDM:
nano /etc/gdm3/custom.conf
Individuate la riga #WaylandEnable=false, rimuovete il commento e salvate il file:
WaylandEnable=false
Installazione di xrdp
apt install xrdp -y
Abilitate e avviate il servizio:
systemctl enable --now xrdp
Aggiunta dell'utente xrdp al gruppo ssl-cert
adduser xrdp ssl-cert
Configurazione del file di avvio della sessione
Aprite /etc/xrdp/startwm.sh e aggiungete le seguenti righe prima della riga finale exec:
export XDG_SESSION_TYPE=x11 export GNOME_SHELL_SESSION_MODE=ubuntu unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR
Apertura della porta nel firewall
ufw allow 3389/tcp
Se possibile, limitate l'accesso a un intervallo IP specifico: ufw allow from 192.168.1.0/24 to any port 3389 proto tcp
Riavvio di xrdp
systemctl restart xrdp
Connessione da Windows
Premete Win+R, digitate mstsc e premete Invio. Inserite l'indirizzo IP del vostro server e fate clic su Connetti.
[IMAGE: mstsc-connection-dialog.png — Connessione desktop remoto con l'indirizzo del server inserito]
Nella schermata di accesso di xrdp, lasciate la sessione impostata su Xorg e inserite il nome utente e la password di Ubuntu:
[IMAGE: xrdp-login.png — la schermata di accesso di xrdp]
Dopo l'accesso, appare il desktop remoto:
[IMAGE: rdp-xfce-desktop.png — il desktop remoto mostrato tramite RDP]
Connessione da macOS
Installate Microsoft Remote Desktop dall'App Store.
Fate clic su Aggiungi PC e inserite l'indirizzo IP del vostro server.
Accedete con il vostro nome utente e password di Ubuntu.
Confronto: VNC e RDP
| VNC | RDP | |
|---|---|---|
| Protocollo | Standard aperto | Microsoft (implementazione open source tramite xrdp) |
| Client Windows | Richiede software di terze parti | Integrato (mstsc) |
| Client macOS | Integrato (Finder) | Microsoft Remote Desktop (App Store) |
| Crittografia | Nessuna per impostazione predefinita (usare un tunnel SSH) | TLS (gestita da xrdp) |
| Prestazioni | Moderate | Generalmente più fluide |
| Supporto multiutente | Limitato | Migliore |
Risoluzione dei problemi
Schermata nera dopo l'accesso RDP — assicuratevi che le variabili d'ambiente necessarie siano state aggiunte a /etc/xrdp/startwm.sh come descritto sopra, e che Wayland sia disattivato in /etc/gdm3/custom.conf. Quindi riavviate xrdp: systemctl restart xrdp
Connessione VNC rifiutata — verificate che il server VNC sia in esecuzione: vncserver -list. Assicuratevi che la porta 5901 sia aperta nel firewall.
La sessione VNC non si avvia — terminate la sessione ed eliminate i file di blocco, quindi riavviate:
vncserver -kill :1 rm -f ~/.vnc/*.log ~/.vnc/*.pid vncserver :1
La connessione cade o compare una schermata grigia dopo aver inserito la password in xrdp — create o modificate ~/.xsessionrc per l'utente e aggiungete:
export XDG_SESSION_TYPE=x11
Assicuratevi inoltre che l'utente non sia contemporaneamente connesso a una sessione desktop locale: disconnettetevi dalla sessione locale prima di connettervi tramite xrdp.
Errore di autenticazione in xrdp — assicuratevi di accedere con un utente e una password di sistema Ubuntu validi, non con la password VNC.
xrdp si connette ma si disconnette immediatamente — controllate lo stato di entrambi i servizi:
systemctl status xrdp systemctl status xrdp-sesman
Impossibile avviare GNOME tramite VNC — su Ubuntu 24.04, potrebbe essere necessario installare separatamente il pacchetto xorg: apt install xorg -y