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 tramite un tunnel SSH.
Virtual Network Computing (VNC) è un sistema grafico di condivisione desktop che consente di utilizzare la tastiera e il mouse per controllare in remoto un altro computer. È un'alternativa open source al protocollo desktop remoto (RDP) Microsoft.
Prerequisiti #
Prima di continuare con il tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.
Installazione dell'ambiente desktop #
La maggior parte dei server non ha un ambiente desktop installato, quindi inizieremo installando un ambiente desktop leggero.
Ci sono diversi ambienti desktop (DE) disponibili nei repository di Ubuntu. Installeremo Xfce. È un ambiente desktop veloce, stabile e leggero, il che lo rende ideale per l'utilizzo su un server remoto.
Inserisci i seguenti comandi per installare Xfce sul tuo server:
sudo apt update
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
A seconda del tuo sistema, il download e l'installazione dei pacchetti Xfce potrebbe richiedere del tempo.
Installazione del 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 gestito attivamente.
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 passaggio successivo consiste nel creare la configurazione iniziale e impostare la password. Non utilizzare sudo durante l'esecuzione di vncserver
comando:
vncserver
Ti verrà chiesto di inserire e confermare la password e se impostarla come password di sola visualizzazione. Se scegli 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/linuxize/.Xauthority does not exist
New 'server2.linuxize.com:1 (linuxize)' desktop at :1 on machine server2.linuxize.com
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/linuxize/.vnc/server2.linuxize.com:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/linuxize/.vnc/passwd :1 to connect to the VNC server.
La prima volta il vncserver
viene eseguito, crea e memorizza il file della password in ~/.vnc
. Questa directory verrà creata se non presente.
Nota il :1
dopo il nome host 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 crei una seconda istanza con vncserver
verrà eseguito sulla prossima porta libera, ad esempio :2
, il che significa che il server è in esecuzione sulla porta 5902
(5900+2).
Ciò che è importante ricordare è che quando si lavora con i server VNC, :X
è una porta display che fa riferimento a 5900+X
.
Prima di continuare con il passaggio successivo, arresta l'istanza VNC utilizzando vncserver
comando con un -kill
opzione e il numero del server come argomento. In questo esempio il server è in esecuzione nella porta 5901 (:1
), quindi lo fermeremo con:
vncserver -kill :1
Killing Xtigervnc process ID 7264... success!
Configurazione del server VNC #
Ora che sia Xfce che TigerVNC sono installati sul server, è necessario configurare TigerVNC per utilizzare Xfce. Per farlo, crea il seguente file:
~/.vnc/xstartupnano ~/.vnc/xstartup
#!/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 ~/.vnc/xstartup
il file deve anche avere i permessi di esecuzione. Esegui il seguente chmod
comando per assicurarsi che i permessi siano corretti:
chmod u+x ~/.vnc/xstartup
Se devi passare opzioni aggiuntive al server VNC, crea un file chiamato config
e aggiungi un'opzione per riga. Ecco un esempio:
geometry=1920x1080
dpi=96
Creazione di un file di unità Systemd #
Crea un file di unità di sistema in modo da avviare, interrompere 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 al suo interno. Assicurati di cambiare il nome utente sulla riga 7 in modo che corrisponda al tuo nome utente.
sudo nano /etc/systemd/system/[email protected]
/etc/systemd/system/[email protected][Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=linuxize
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 passaggio successivo consiste nell'abilitare il file unit con il seguente comando:
sudo systemctl enable [email protected]
Il numero 1
dopo il @
sign 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.
Avvia 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 Thu 2018-08-16 19:05:54 UTC; 4s ago
Process: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
Main PID: 9900 (vncserver)
Tasks: 0 (limit: 507)
CGroup: /system.slice/system-vncserver.slice/[email protected]
‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg
Connessione al server VNC #
VNC non è un protocollo crittografato e può essere soggetto a packet sniffing. L'approccio consigliato è creare un tunnel SSH che inoltri in modo sicuro il traffico dal tuo computer locale sulla porta 5901 al server sulla stessa porta.
Configura il tunneling SSH su Linux e macOS #
Se esegui Linux, macOS o qualsiasi altro sistema operativo basato su Unix sulla tua macchina, puoi creare facilmente un tunnel SSH con il seguente comando:
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
Ti verrà chiesto di inserire la password utente.
Non dimenticare di sostituire username
e server_ip_address
con il tuo nome utente e l'indirizzo IP del tuo server.
Configura il tunneling SSH su Windows #
Se esegui Windows, puoi configurare il tunneling SSH utilizzando il client SSH PuTTY.
Apri Putty e inserisci l'indirizzo IP del tuo server nel Host name or IP address
campo.
Sotto il Connection
menu, casella, espandi SSH
e seleziona Tunnels
. Immettere la porta del server VNC (5901
) nel Source Port
campo e inserisci server_ip_address:5901
nella Destination
campo e fare clic su Add
pulsante come mostrato nell'immagine qui sotto:
Torna alla Session
pagina per salvare le impostazioni in modo che non sia necessario inserirle ogni volta. Sul server remoto, seleziona la sessione salvata e fai clic su Open
pulsante.
Connessione tramite Vncviewer #
Ora che il tunnel SSH è stato creato, è il momento di aprire il tuo Vncviewer e di connetterti 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 su Connect
pulsante.
Inserisci la tua password utente quando richiesto e dovresti vedere il desktop Xfce predefinito. Sarà simile a questo:
Puoi iniziare a interagire con il desktop XFCE remoto dal tuo computer locale utilizzando la tastiera e il mouse.