Introduzione

Virtual Network Computing (VNC) è un sistema grafico di condivisione desktop che consente di utilizzare tastiera e mouse per controllare in remoto un altro computer. È un'alternativa open source al protocollo desktop remoto (RDP) di Microsoft.

Questa guida illustra i passaggi necessari per l'installazione e la configurazione di un server VNC su Ubuntu 18.04. Ti mostreremo anche come connetterti in modo sicuro al server VNC attraverso un tunnel SSH.

Prerequisiti

Prima di continuare con il tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.

Se desideri installare VNC su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare il Desktop Environment

La maggior parte dei server non ha un ambiente desktop installato, quindi inizieremo installando un ambiente desktop leggero.

Esistono diversi ambienti desktop (DE) disponibili nei repository Ubuntu. Installeremo Xfce. È un ambiente desktop veloce, stabile e leggero, che lo rende ideale per l'utilizzo su un server remoto.

Immettere i comandi seguenti per installare Xfce sul server:

sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

A seconda del sistema in uso, il download e l'installazione dei pacchetti Xfce potrebbe richiedere del tempo.

Installare il server VNC

Ci sono anche diversi server VNC disponibili nei repository Ubuntu come TightVNC , TigerVNC e x11vnc. Ogni server VNC ha diversi punti di forza e di debolezza in termini di velocità e sicurezza.

Installeremo TigerVNC. È un server VNC ad alte prestazioni attivamente mantenuto.

Digita il seguente comando per installare TigerVNC sul tuo server Ubuntu:

sudo apt install tigervnc-standalone-server tigervnc-common

Ora che il server VNC è installato, il passo successivo è creare la configurazione iniziale e impostare la password. Non usare sudo quando si esegue il comando vncserver:

vncserver

Ti verrà richiesto di inserire e confermare la password e se impostarla come password di sola visualizzazione. Se si sceglie di impostare una password di sola visualizzazione, l'utente non sarà in grado di interagire con l'istanza VNC con il mouse e la tastiera.

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/noviello/.Xauthority does not exist

New 'server2.noviello.it:1 (noviello)' desktop at :1 on machine server2.noviello.it

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/noviello/.vnc/server2.noviello.it:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/noviello/.vnc/passwd :1 to connect to the VNC server.

La prima volta che si esegue il comando vncserver , crea e memorizza il file delle password ~/.vnc. Questa directory verrà creata se non presente.

Il parametro :1, dopo l'hostname nell'output sopra, indica il numero della porta di visualizzazione su cui è in esecuzione il server vnc. Nel nostro caso, il server è in esecuzione sulla porta TCP 5901 (5900+1). Se si crea una seconda istanza con vncserver essa verrà eseguita sulla successiva porta libera :2, ovvero , il server sarà in esecuzione sulla porta 5902(5900+2).

Ciò che è importante ricordare è che quando si lavora con server VNC, :X è una porta di visualizzazione a cui si fa riferimento 5900+X.

Prima di continuare con il passaggio successivo, interrompere l'istanza VNC utilizzando il comando vncserver con l'opzione -kill e il numero del server come argomento. In questo esempio il server è in esecuzione nella porta 5901 (:1), quindi lo arresteremo con:

vncserver -kill :1
Killing Xtigervnc process ID 6458... success!

Configurare il server VNC

Ora che sia Xfce che TigerVNC sono installati sul server, dobbiamo configurare TigerVNC per usare Xfce. Per fare ciò, crea il seguente file:

nano ~/.vnc/xstartup

Incollare le seguenti righe di codice

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

Salva e chiudi il file. I comandi sopra verranno eseguiti automaticamente ogni volta che avvii o riavvii il server TigerVNC.

Il file ~/.vnc/xstartup deve inoltre disporre delle autorizzazioni di esecuzione. Eseguire il comando chmod seguente per assicurarsi che le autorizzazioni siano corrette:

chmod u+x ~/.vnc/xstartup

Se è necessario inserire ulteriori opzioni al server VNC, creare un file denominato config e aggiungere un'opzione per riga. Ecco un esempio:

geometry=1920x1084
dpi=96

Creare un file di unità Systemd

Creare un file di unità di sistema in modo da avviare, arrestare e riavviare il servizio VNC secondo necessità, come qualsiasi altro servizio di sistema.

Apri il tuo editor di testo e copia e incolla la seguente configurazione. Assicurati di cambiare il nome utente sulla linea 7 in modo che corrisponda al tuo nome utente.

sudo nano /etc/systemd/system/[email protected]
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple
User=noviello
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Salva e chiudi il file.

Notifica a systemd che abbiamo creato un nuovo file di unità con:

sudo systemctl daemon-reload

Il prossimo passo è abilitare il file unitario con il seguente comando:

sudo systemctl enable [email protected]

Il numero 1 dopo il simbolo @ definisce la porta di visualizzazione su cui verrà eseguito il servizio VNC. Ciò significa che il server VNC ascolterà sulla porta 5901, come abbiamo discusso nella sezione precedente.

Avviare il servizio VNC eseguendo:

sudo systemctl start [email protected]

Verifica che il servizio sia stato avviato correttamente con:

sudo systemctl status [email protected]
[email protected] - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/[email protected]; indirect; vendor preset: enabled)
   Active: active (running) since Tue 2020-02-11 21:57:43 CET; 4s ago
  Process: 6629 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
 Main PID: 6657 (vncserver)
    Tasks: 0 (limit: 2298)
   CGroup: /system.slice/system-vncserver.slice/[email protected]
           ‣ 6657 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

Connettersi al server VNC

VNC non è un protocollo crittografato e può essere soggetto allo sniffing dei pacchetti. L'approccio consigliato è quello di creare un tunnel SSH che inoltri in modo sicuro il traffico dal tuo computer locale sulla porta 5901 al server sulla stessa porta.

Configurare il tunneling SSH su Linux e macOS

Se esegui Linux, macOS o qualsiasi altro sistema operativo basato su Unix sul tuo computer, puoi facilmente creare un tunnel SSH con il seguente comando:

ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address

Ti verrà richiesto di inserire la password dell'utente.

Non dimenticare di sostituire username e server_ip_address con il tuo nome utente e l'indirizzo IP del tuo server.

Configurare il tunneling SSH su Windows

Se si esegue Windows, è possibile impostare il tunneling SSH utilizzando il client SSH PuTTY.

Apri Putty e inserisci il tuo indirizzo IP del server nel campo Host name or IP address.

Nel menu Connection, espandi SSH e seleziona Tunnels. Inserisci la porta del server VNC (5901) nel campo Source Port e inserisci server_ip_address:5901 nel campo Destination e fai clic sul pulsante Add.

Torna alla pagina Session per salvare le impostazioni in modo da non doverle inserire ogni volta. Per accedere al server remoto, selezionare la sessione salvata e fare clic sul pulsante Open.

Connessione tramite Vncviewer

Ora che viene creato il tunnel SSH, è il momento di aprire Vncviewer e connettersi al server VNC su localhost:5901.

Puoi utilizzare qualsiasi visualizzatore VNC come TigerVNC, TightVNC, RealVNC, UltraVNC, Vinagre e VNC Viewer per Google Chrome.

Useremo TigerVNC. Apri il visualizzatore, inserisci localhost:5901 e fai clic sul pulsante Connect.

Inserisci la tua password utente quando richiesto e dovresti vedere il desktop Xfce predefinito.

Puoi iniziare a interagire con il desktop XFCE remoto dal tuo computer locale usando la tastiera e il mouse.

Conclusione

Ormai dovresti avere un server VNC attivo e funzionante e puoi facilmente gestire il tuo server Ubuntu 18.04 dalla tua macchina desktop locale usando un'interfaccia grafica facile da usare.

Per configurare il server VNC per avviare un display per più di un utente, creare un nuovo file di configurazione iniziale e impostare la password utilizzando il comando vncserver. Sarà inoltre necessario creare un nuovo file di servizio utilizzando una porta diversa.