VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04
Alcuni utenti affittano VPS Windows a buon mercato per avviare un servizio di desktop remoto. Lo stesso può essere fatto su Linux senza dover ospitare dell'hardware presso il data center o affittare un server dedicato. Alcuni necessitano di un'interfaccia grafica familiare per test e sviluppo o di un desktop remoto con una larghezza di banda consistente per lavorare su dispositivi mobili. Ci sono molte applicazioni per i sistemi basati sul protocollo Remote FrameBuffer (RFB) della Virtual Network Computing (VNC). In un breve articolo, spiegheremo come configurarlo su una macchina virtuale con qualsiasi hypervisor.

Indice:

Scelta del server VNC
Installazione e configurazione
Avvio del servizio tramite systemd
Collegamento al desktop

Scelta del server VNC

Il servizio VNC può essere integrato nel sistema di virtualizzazione, con l'hypervisor che lo collega ai dispositivi emulati, senza necessità di configurazione aggiuntiva. Questa opzione prevede costi significativi e non è supportata da tutti i provider — anche in una realizzazione meno impegnativa, quando invece di emulare una vera scheda grafica si trasmette un'astrazione semplificata (framebuffer) alla macchina virtuale. A volte il server VNC viene collegato a un server X in esecuzione, ma questo metodo è più adatto per l'accesso a una macchina fisica e crea alcune complessità tecniche su una virtuale. È più semplice installare un server VNC insieme a un server X integrato. Non richiede la presenza di dispositivi fisici (scheda video, tastiera e mouse) o la loro emulazione tramite hypervisor, rendendolo adatto per VPS di qualsiasi tipo.

Installazione e configurazione

Avremo bisogno di una macchina virtuale con Ubuntu Server 18.04 LTS nella configurazione di default. Nei repository standard di questa distribuzione ci sono diversi server VNC: TightVNC, TigerVNC, x11vnc e altri. Ci siamo fermati su TigerVNC — un fork attivo di TightVNC non più supportato dallo sviluppatore. La configurazione di altri server avviene in modo simile. Bisogna anche scegliere un ambiente desktop: a nostro avviso, l'opzione ottimale è XFCE per via delle relativamente basse esigenze di risorse computazionali. Chi lo desidera può installare altri DE o WM: dipende dalle preferenze personali, ma la scelta del software influisce direttamente sulla necessità di memoria RAM e di core computazionali.

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04

L'installazione dell'ambiente desktop con tutte le dipendenze si esegue con il seguente comando:

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

Successivamente, è necessario installare il server VNC:

sudo apt-get install tigervnc-standalone-server tigervnc-common

Eseguirlo con diritti di superutente non è una buona idea. Creiamo un utente e un gruppo:

sudo adduser vnc

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04

Aggiungiamo l'utente al gruppo sudo, affinché possa gestire i compiti legati all'amministrazione. Se non è necessaria questa operazione, si può saltare questo passaggio:

sudo gpasswd -a vnc sudo

Nella fase successiva, bisogna avviare il server VNC con i privilegi dell'utente vnc, per creare una password sicura e file di configurazione nella directory ~/ .vnc/. La lunghezza della password può variare da 6 a 8 caratteri (i caratteri in eccesso vengono troncati). Se necessario, può essere impostata anche una password solo per la visualizzazione, quindi senza accesso a tastiera e mouse. I seguenti comandi vengono eseguiti con il nome dell'utente vnc:

su - vnc
vncserver -localhost no

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04
Per impostazione predefinita, il protocollo RFB utilizza un intervallo di porte TCP da 5900 a 5906 — queste sono le cosiddette porte di visualizzazione, ognuna delle quali corrisponde a uno schermo del server X. A questo proposito, le porte sono associate agli schermi da :0 a :6. L'istanza del server VNC che abbiamo avviato ascolta sulla porta 5901 (schermo :1). Altre istanze possono funzionare su altre porte con schermi :2, :3, ecc. Prima di procedere alla configurazione, è necessario fermare il server:

vncserver -kill :1

Il comando dovrebbe restituire un messaggio simile: «Killing Xtigervnc process ID 18105… success!».

Quando TigerVNC viene avviato, esegue lo script ~/ .vnc/ xstartup per impostare i parametri di configurazione. Creiamo il nostro script, salvando prima un backup di quello esistente, se presente:

mv ~/ .vnc/ xstartup ~/ .vnc/ xstartup.b
nano ~/ .vnc/ xstartup

La sessione dell'ambiente desktop XFCE si avvia con il seguente script xstartup:

#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &

Il comando xrdb è necessario affinché il sistema VNC legga il file .Xresources nella home directory. Lì l'utente può definire vari parametri del desktop grafico: rendering dei caratteri, colori del terminale, temi del cursore, ecc. Lo script deve essere reso eseguibile:

chmod 755 ~/ .vnc/ xstartup

A questo punto la configurazione del server VNC è completata. Se viene avviato con il comando vncserver -localhost no (con l'utente vnc), si può connettere con la password precedentemente impostata e visualizzare la seguente schermata:

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04

Avvio del servizio tramite systemd

L'avvio manuale del server VNC non è adatto per applicazioni in produzione, quindi configureremo un servizio di sistema. I comandi vengono eseguiti con i privilegi di root (usiamo sudo). Iniziamo creando un nuovo file di unità per il nostro server:

sudo nano /etc/systemd/system/vncserver@.service

Il simbolo @ nel nome permette di passare un argomento per la configurazione del servizio. Nel nostro caso, specifica la porta di visualizzazione del VNC. Il file di unità è composto da diverse sezioni:

[Unit]
Description=Server TigerVNC
After=syslog.target network.target

[Service]
Type=simple
User=vnc 
Group=vnc 
WorkingDirectory=/home/vnc 
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Poi è necessario notificare a systemd della creazione di un nuovo file e attivarlo:

sudo systemctl daemon-reload
sudo systemctl enable vncserver@1.service

Il numero 1 nel nome definisce il numero dello schermo.

Fermiamo il server VNC, lo avviamo come servizio e controlliamo lo stato:

# от имени пользователя vnc 
vncserver -kill :1

# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1

Se il servizio è attivo, dovremmo ricevere un risultato simile.

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04

Collegamento al desktop

La nostra configurazione non utilizza la crittografia, quindi i pacchetti di rete possono essere intercettati da malintenzionati. Inoltre, nei server VNC vengono frequentemente trovate vulnerabilità, quindi non conviene lasciarli aperti per l'accesso da internet. Per una connessione sicura da un computer locale, bisogna incapsulare il traffico in un tunnel SSH e poi configurare il client VNC. Su Windows, si può usare un client grafico SSH (ad esempio, PuTTY). Per garantire la sicurezza, TigerVNC sul server è configurato per ascoltare solo localhost e non è accessibile direttamente dalle reti pubbliche:


sudo netstat -ap |more

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04
Su Linux, FreeBSD, OS X e altri sistemi operativi simili a UNIX, il tunnel dal computer client si crea utilizzando il comando ssh (il servizio sshd deve essere attivo sul server VNC):

ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip

L'opzione -L collega la porta 5901 della connessione remota alla porta 5901 di localhost. L'opzione -C attiva la compressione, mentre -N indica a ssh di non eseguire comandi remoti. L'opzione -l specifica il login per l'accesso remoto.

Dopo aver impostato il tunnel sul computer locale, è necessario avviare il client VNC e stabilire una connessione con l'host 127.0.0.1:5901 (localhost:5901), utilizzando la password precedentemente impostata per l'accesso al server VNC. Ora possiamo interagire in modo sicuro tramite un tunnel crittografato con l'ambiente desktop XFCE su VPS. Nello screenshot nell'emulatore di terminale è stata avviata l'utilità top per mostrare un consumo ridotto di risorse della macchina virtuale. Da qui in avanti, tutto dipenderà dalle applicazioni utente.

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04
Instalare e configurare un server VNC su Linux è possibile su quasi tutti i VPS. Non sono necessarie configurazioni costose e ad alta intensità di risorse con l'emulazione della scheda video o l'acquisto di licenze commerciali per il software. Oltre all'opzione di servizio di sistema che abbiamo esaminato, ci sono altre possibilità: l'avvio in modalità demone (attraverso /etc/rc.local) all'avvio del sistema o su richiesta tramite inetd. Quest'ultima è interessante per creare configurazioni multiutente. L'Internet superserver avvierà il server VNC e collegherà il client a esso, e il server VNC creerà un nuovo schermo e inizierà una sessione. Per l'autenticazione all'interno di essa è possibile utilizzare un gestore di display grafico (ad esempio, LightDM), e dopo la disconnessione del client, la sessione verrà chiusa e tutti i programmi in esecuzione sullo schermo verranno terminati.

VPS Linux con interfaccia grafica: avviamo un server VNC su Ubuntu 18.04

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster