Cicle formatiu: CFGM Sistemes Microinformàtics i Xarxes (SMX) / CFGS Administració de sistemes informàtics en xarxa (ASIX)
Sistema operatiu: Ubuntu Server 26.04 LTS
VNC (Virtual Network Computing) és un protocol de codi obert que permet accedir de forma gràfica a l’escriptori d’un ordinador remot. A diferència de X11 Forwarding (que reenvia finestres individuals), VNC transmet un framebuffer complet: tot el que es veuria a la pantalla del servidor, incloent-hi la sessió d’escriptori, que a més persisteix encara que el client es desconnecti.
En un entorn de servidor sense escriptori gràfic instal·lat (headless), VNC és útil per:
Xtigervnc).:1, :2…). El port TCP
resultant és 5900 + número de display (:1 → 5901, :2 → 5902).En una instal·lació Ubuntu Server (sense entorn gràfic), aquest conflicte no existeix perquè no hi ha ni Wayland ni Xwayland en marxa: TigerVNC crea el seu propi display X11 net.
Es recomana TigerVNC, ja que és la implementació que substitueix TightVNC als dipòsits moderns, ofereix millor rendiment i suport de xifratge.
Actualitza la llista de paquets
sudo apt updateInstal·la el servidor
sudo apt install tigervnc-standalone-server tigervnc-commonUn servidor VNC no proporciona per si mateix cap escriptori: cal instal·lar-ne un. Per a un ús remot lleuger es recomana Xfce:
sudo apt install xfce4 xfce4-goodiesAlternatives:
# MATE (pes mitjà)
sudo apt install ubuntu-mate-desktop
# GNOME complet (més pesat, no recomanat per VNC en servidor)
sudo apt install ubuntu-desktopSi el procés d’instal·lació demana triar gestor de sessions per
defecte (gdm3 o lightdm), en un servidor sense
ús gràfic local qualsevol opció és vàlida; manteniu la que ja teniu
configurada per evitar sorpreses en pròximes actualitzacions.
Cal executar-ho amb l’usuari que utilitzarà la sessió (no cal ser root):
vncpasswdEs demanarà una contrasenya (i opcionalment una de només lectura). Es
desa xifrada a ~/.vnc/passwd.
xstartup)Aquest fitxer determina quin escriptori es carrega cada vegada que s’inicia una sessió VNC nova:
mkdir -p ~/.vnc
nano ~/.vnc/xstartupContingut per a Xfce:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &Donar-li permisos d’execució:
chmod +x ~/.vnc/xstartupvncserver :1 -geometry 1920x1080 -depth 24 -xstartup ~/.vnc/xstartup -localhost noParàmetres habituals:
| Opció | Descripció |
|---|---|
-geometry AMPLExALT |
Resolució de la sessió virtual (p. ex. 1920x1080) |
-depth |
Profunditat de color en bits (16, 24…) |
-localhost yes/no |
Si yes, només accepta connexions des del mateix equip
(necessari per túnel SSH) |
-xstartup |
Ruta a l’script d’inici de sessió |
-alwaysshared |
Permet diverses connexions simultànies a la mateixa sessió |
-SecurityTypes |
Tipus d’autenticació/xifratge acceptats (p. ex. VncAuth,TLSVnc) |
Per aturar la sessió de prova:
vncserver -kill :1Crear una unitat plantilla que permeti gestionar qualsevol display
amb systemctl:
sudo nano /etc/systemd/system/vncserver@.service[Unit]
Description=TigerVNC server per al display %i
After=syslog.target network.target
[Service]
Type=forking
User=ramon
Group=ramon
WorkingDirectory=/home/ramon
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1920x1080 -depth 24 -localhost yes
ExecStop=/usr/bin/vncserver -kill %i
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Substituïu
ramonper l’usuari real que farà servir la sessió gràfica.
Activar-lo:
sudo systemctl daemon-reload
sudo systemctl enable --now vncserver@:1.service
sudo systemctl status vncserver@:1.serviceVerificar que escolta al port esperat:
ss -tlnp | grep 5901El trànsit VNC no va xifrat per defecte. La pràctica
recomanada és no exposar mai el port 5901 directament a internet, sinó
vincular el servidor a localhost
(-localhost yes) i accedir-hi mitjançant un túnel SSH.
Des del client:
ssh -L 5901:localhost:5901 -N ramon@192.168.2.10Aquesta ordre reenvia el port local 5901 fins al port 5901 de localhost dins del servidor remot, xifrat
pel canal SSH. Cal deixar el terminal obert (o executar-ho en segon pla
amb -f) i, després, connectar el visor VNC a:
localhost:5901Tallafoc: si en algun cas cal exposar el port
directament (no recomanat), restringir per IP amb ufw:
sudo ufw allow from 192.168.2.0/24 to any port 5901 proto tcp-SecurityTypes: forçar autenticació
forta o TLS (TLSVnc, X509Vnc) en lloc del
mètode VncAuth bàsic.
Sessió de només lectura: vncpasswd -f genera una contrasenya independent per a accés
en mode visualització.
No reutilitzar la contrasenya del sistema operatiu com a contrasenya VNC (TigerVNC la trunca a 8 caràcters).
sudo apt install tigervnc-viewer
vncviewer localhost:5901sudo apt install remmina remmina-plugin-vncCrear una connexió nova de tipus VNC apuntant a localhost:5901 (si s’usa túnel SSH) o directament a la IP
del servidor i el port corresponent (si la xarxa és de confiança i no
s’usa túnel).
| Funcionalitat | Descripció |
|---|---|
| Sessió persistent | La sessió Xfce segueix activa encara que es tanqui el client; en reconnectar es recupera l’estat |
| Múltiples displays | Es poden mantenir diverses sessions simultànies (:1, :2…) per a diferents usuaris o propòsits |
| Compartició d’escriptori físic | Amb x11vnc es pot compartir la sessió gràfica
real d’un equip (no una sessió virtual nova) |
| Porta-retalls compartit | Amb autocutsel es pot sincronitzar el porta-retalls
entre client i servidor |
| Compressió i qualitat | El protocol permet ajustar compressió JPEG i profunditat de color per optimitzar l’amplada de banda |
| Multiplataforma | El protocol és obert; existeixen clients per a pràcticament qualsevol sistema operatiu |
x11vnc:
compartir una sessió gràfica ja existentA diferència de vncserver, que crea un display X11
nou i virtual, x11vnc comparteix la
pantalla física/real d’un equip que ja té sessió gràfica activa (útil en
equips d’escriptori, no tant en servidors headless):
sudo apt install x11vnc
x11vnc -display :0 -auth guess -forever -loop -rfbauth ~/.vnc/passwd -rfbport 5900 -shared| Símptoma | Causa probable | Solució |
|---|---|---|
| Pantalla en blanc en connectar | xstartup sense permisos d’execució o buit |
chmod +x ~/.vnc/xstartup; revisar el contingut |
| El servei no arrenca | Sessió :1 ja bloquejada per un procés anterior |
vncserver -kill :1 i tornar a arrencar; revisar ~/.vnc/*.log |
| No es pot connectar des del client | Port no obert / servidor vinculat a localhost sense
túnel actiu |
Comprovar ss -tlnp \| grep 590x; obrir túnel SSH o
ajustar -localhost |
Falla chmod/no troba xstartup |
El fitxer no existeix o té un altre nom | ls -la ~/.vnc/xstartup |
Components d’Xfce fan crash (només rellevant si hi ha
entorn gràfic local) |
Variables de Wayland filtrant-se a la sessió VNC | Assegurar-se que la instal·lació és headless o desactivar
Wayland a /etc/gdm3/custom.conf |
Ordres útils de diagnòstic:
vncserver -list
sudo systemctl status vncserver@:1.service
sudo journalctl -u vncserver@:1.service -n 50
cat ~/.vnc/*.log# Instal·lació
sudo apt install tigervnc-standalone-server tigervnc-common xfce4 xfce4-goodies -y
# Contrasenya
vncpasswd
# xstartup
chmod +x ~/.vnc/xstartup
# Arrencar / aturar manualment
vncserver :1 -geometry 1920x1080 -depth 24 -localhost yes
vncserver -kill :1
# Servei
sudo systemctl enable --now vncserver@:1.service
sudo systemctl status vncserver@:1.service
# Túnel SSH des del client
ssh -L 5901:localhost:5901 -N usuari@192.168.2.10