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.

Questo articolo illustra i passaggi per installare e configurare un server VNC su CentOS 8. Ti mostreremo anche come collegarti in modo sicuro al server VNC attraverso un tunnel SSH.

Prerequisiti

Per seguire questa guida, è necessario aver effettuato l'accesso come utente con privilegi sudo sul proprio computer CentOS remoto.

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

In genere, nei server non è installato un ambiente desktop. Se il computer a cui si desidera connettersi non dispone di GUI, il primo passo è installarlo. Altrimenti, saltare questo passaggio.

Esegui il comando seguente per installare Gnome, l'ambiente desktop predefinito in CentOS 8 sul tuo computer remoto:

sudo dnf groupinstall "Server with GUI"

A seconda del sistema in uso, il download e l'installazione dei pacchetti e delle dipendenze di Gnome potrebbero richiedere del tempo.

Installare il server VNC

TigerVNC è un server VNC open source ad alte prestazioni attivamente mantenuto. È disponibile nei repository CentOS predefiniti, per installarlo digitare:

sudo dnf install tigervnc-server

Una volta installato il server VNC, eseguire il comando vncserver per creare la configurazione iniziale e impostare la password. Non utilizzare sudo quando si esegue il comando seguente:

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
A view-only password is not used
xauth:  file /home/nome_utente/.Xauthority does not exist

New 'TEST-SERVER-1:1 (nome_utente)' desktop is TEST-SERVER-1:1

Creating default startup script /home/nome_utente/.vnc/xstartup
Creating default config /home/nome_utente/.vnc/config
Starting applications specified in /home/nome_utente/.vnc/xstartup
Log file is /home/nome_utente/.vnc/TEST-SERVER-1:1.log

La prima volta che si esegue il comando vncserver , creerà e memorizzerà il file della password nella directory ~/.vnc che verrà creata se non presente.

Nota :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, verrà eseguita sulla successiva porta libera :2, ovvero , il che significa che il server è 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, arrestare innanzitutto l'istanza VNC utilizzando il comando vncserver con un'opzione -kill e il numero del server come argomento. Nel nostro caso, il server è in esecuzione nella porta 5901 (:1), quindi per arrestarlo, eseguire:

vncserver -kill :1
Killing Xvnc process ID 21975

Configurare il server VNC

Ora che sia Gnome che TigerVNC sono installati sulla macchina CentOS remota, il passo successivo è configurare TigerVNC per usare Gnome. Il server VNC utilizza il file ~/.vnc/xstartup per avviare le applicazioni durante la creazione di un nuovo desktop. Apri il file:

vim ~/.vnc/xstartup

Aggiungere le seguenti righe di codice alla fine del file:

...
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &

Salva e chiudi il file.

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

Lo script sopra viene eseguito automaticamente ogni volta che avvii o riavvii il server TigerVNC.

Se si desidera utilizzare ulteriori opzioni al server VNC, aprire il file ~/.vnc/config e aggiungere un'opzione per riga. Le opzioni più comuni sono elencate nel file. Decommenta e modifica a tuo proprio piacimento.

vim ~/.vnc/config
# securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
# alwaysshared

Creare un file di unità Systemd

I file di unità consentono di avviare, arrestare e riavviare facilmente i servizi.

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 vi /etc/systemd/system/[email protected]
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple
User=nome_utente
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 @: definisce la porta di visualizzazione su cui ascolterà il servizio VNC. Stiamo usando 1, il che significa che il server VNC utilizzerà la porta 5901 come 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 2020-02-21 23:15:22 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 per inoltrare in modo sicuro il traffico dal computer locale sulla porta 5901 al server remoto 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 usando il seguente comando ssh:

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

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

Gli utenti Windows possono impostare il tunneling SSH utilizzando 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, 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.

Connettersi tramite Vncviewer

Per connettersi al server remoto, aprire il visualizzatore VNC e accedere 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 Gnome predefinito.

Ora puoi iniziare a lavorare sul desktop remoto dal tuo computer locale usando la tastiera e il mouse.

Conclusione

Ti abbiamo mostrato come configurare un server VNC e collegarti a una macchina CentOS 8 remota.

Per avviare una visualizzazione per più di un utente, ripetere gli stessi passaggi. Creare la configurazione iniziale, impostare la password utilizzando il comando vncserver e creare un nuovo file di servizio utilizzando una porta diversa.