Introduzione

Questo tutorial descrive come installare e configurare il server VNC su Linux Debian 10. Ti mostreremo anche come creare un tunnel SSH e collegarti in modo sicuro al server VNC.

Virtual Network Computing (VNC) è un sistema grafico di condivisione desktop che consente di utilizzare tastiera e mouse per controllare in remoto un altro computer.

Prerequisiti

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

Se il vostro intento è installare VNC su di un server in remoto continuate a leggere, altrimenti se volete installare VNC sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere 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 Desktop Environment

È probabile che sul tuo server Debian non sia installato un ambiente desktop. Il nostro primo passo è installare un ambiente desktop leggero.

Esistono diversi ambienti desktop (DE) disponibili nei repository Debian. In questo tutorial useremo Xfce come ambiente desktop preferito. È veloce, stabile e leggero, il che lo rende ideale per l'utilizzo su un server remoto.

Aggiorna l'indice dei pacchetti e installa Xfce sul tuo server Debian con i seguenti comandi:

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 Debian come TightVNC , TigerVNC e x11vnc . Ogni server VNC ha i suoi punti di forza e di debolezza in termini di velocità e sicurezza.

Utilizzeremo TigerVNC, che è il server VNC ad alte prestazioni attivamente mantenuto. Per installare TigerVNC sul tuo server Debian emetti il ​​seguente comando:

sudo apt install tigervnc-standalone-server tigervnc-common

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

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 'SERVER-1:1 (noviello)' desktop at :1 on machine SERVER-1

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

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

Quando si esegue il comando vncserver per la prima volta, verrà creato e memorizzato il file della password nella directory ~/.vnc.

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

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, ovvero :2 ciò significa che la seconda istanza sarà eseguita sulla porta 5902(5900 + 2).

Prima di procedere con il passaggio successivo, interrompere l'istanza VNC utilizzando il comando vncserver con l'opzione -kill e il numero del server come argomento. Nel nostro caso il server è in esecuzione nella porta 5901 ( :1), quindi lo fermeremo con:

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

Configurazione del 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
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

Lo script sopra verrà eseguito 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 è possibile aggiungere ulteriori opzioni al server VNC, è possibile creare un file denominato config e aggiungere un'opzione per riga. Creare il file config:

nano ~/.vnc/config

Incollare il seguente codice per impostare manualmente la risoluzione:

geometry=1920x1084
dpi=96

Salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER se stai utilizzando nano.

Creazione di un file di unità Systemd

Il file di unità di sistema ci consentirà di avviare, arrestare e riavviare facilmente il servizio VNC, se necessario.

Apri il tuo editor di testo e copia e incolla la seguente configurazione in esso. Non dimenticare di modificare il nome utente nella riga 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

Se stai utilizzando nano salvare e chiudere il file premendo CTRL+X, seguito da Y per salvare le modifiche e quindi ENTER.

Ricaricare il servizio systemctl, per aggiungere il nuovo file appena creato, con il comando seguente:

sudo systemctl daemon-reload

Quindi, abilitare il servizio:

sudo systemctl enable [email protected]

Il numero 1 dopo il carattere @ definisce la porta di visualizzazione su cui verrà eseguito il servizio VNC. Come abbiamo discusso nella sezione precedente poiché stiamo usando 1 il server VNC ascolterà sulla porta 5901.

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]; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-11-21 17:18:32 CET; 2s ago
  Process: 24316 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=ex
 Main PID: 24323 (vncserver)
    Tasks: 0 (limit: 2301)
   Memory: 612.0K
   CGroup: /system.slice/system-vncserver.slice/[email protected]
           ‣ 24323 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

Connessione 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 computer locale sulla porta 5901 al server sulla stessa porta.

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.

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

Apri Putty e inserisci l'indirizzo IP del tuo 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. Ora tutto ciò che devi fare è selezionare la sessione salvata e accedere al server remoto facendo clic sul pulsante Open.

Connessione tramite Vncviewer

Ora che hai impostato il tunneling SSH è tempo di aprire il tuo Vncviewer e di collegarti al server VNC su localhost:5901.

In questo esempio useremo TigerVNC. Se TigerVNC non è ancora installato sul tuo computer locale, installalo con il seguente comando:

sudo apt install tigervnc-viewer

Al termine dell'installazione apri il visualizzatore VNC, inserisci localhost:5901 e fai clic sul pulsante Connect:

vncviewer localhost:5901

Inserisci la password del server remoto quando richiesto e dovresti vedere il desktop Xfce predefinito.

A questo punto, ti sei connesso correttamente al tuo server tramite VNC. Ora 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 Debian 10 dal tuo computer locale usando un'interfaccia grafica.