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 root@IP_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 nome_utente@IP_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 nome_utente@IP_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 &
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.