VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04
Alcuni utenti affittano VPS Windows relativamente economici per avviare un servizio di desktop remoto. Lo stesso si può fare anche su Linux senza ospitare il proprio hardware in un data center o affittare un server dedicato. Alcuni hanno bisogno di un ambiente grafico familiare per test e sviluppo o di un desktop remoto con un ampio canale per lavorare da dispositivi mobili. Ci sono molteplici possibilità di utilizzo di un sistema di Virtual Network Computing (VNC) basato sul protocollo Remote FrameBuffer (RFB). In un breve articolo spiegheremo come configurarlo su una macchina virtuale con qualsiasi hypervisor.

Contenuto:

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, in tal caso l’hypervisor lo collegherà ai dispositivi emulati e non sarà necessaria alcuna configurazione aggiuntiva. Questa opzione comporta spese generali significative e non è supportata da tutti i provider — anche in una realizzazione meno intensiva, quando invece di emulare un dispositivo grafico reale si passa un'astrazione semplificata (framebuffer) alla macchina virtuale. A volte il server VNC si lega a un server X in esecuzione, ma questo metodo è più adatto per l'accesso a una macchina fisica, creando vari problemi tecnici su una virtuale. La soluzione più semplice è installare un server VNC con un server X integrato. Non richiede dispositivi fisici (scheda video, tastiera e mouse) o la loro emulazione tramite hypervisor, quindi è adatto per VPS di qualsiasi tipo.

Installazione e configurazione

Avremo bisogno di una macchina virtuale con Ubuntu Server 18.04 LTS nella configurazione predefinita. Nei repository standard di questa distribuzione ci sono diversi server VNC: TightVNC, TigerVNC, x11vnc e altri. Ci siamo concentrati su TigerVNC — un fork attuale di TightVNC, che non è più supportato dagli sviluppatori. La configurazione di altri server avviene in modo analogo. È necessario anche scegliere l'ambiente desktop: a nostro avviso, la scelta migliore è XFCE grazie ai requisiti relativamente ridotti di risorse computazionali. Chi desidera può installare un altro DE o WM: qui tutto dipende dalle preferenze personali, ma la scelta del software influenza direttamente le esigenze in termini di RAM e core di elaborazione.

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04

L'installazione dell'ambiente desktop con tutte le dipendenze viene eseguita con il seguente comando:

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

Poi è necessario installare il server VNC:

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

Eseguire questo con i diritti di superutente è una cattiva idea. Creiamo un utente e un gruppo:

sudo adduser vnc

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04

Aggiungeremo l'utente al gruppo sudo in modo che possa eseguire compiti legati all'amministrazione. Se non è necessario, questo passaggio può essere saltato:

sudo gpasswd -a vnc sudo

Nel passaggio successivo, è necessario avviare il server VNC con i privilegi dell'utente vnc per creare una password sicura e i file di configurazione nella cartella ~/.vnc/. La lunghezza della password può variare da 6 a 8 caratteri (i caratteri in eccesso vengono troncati). Se necessario, può anche essere impostata una password solo per la visualizzazione, cioè senza accesso a tastiera e mouse. I seguenti comandi vengono eseguiti con l'account dell'utente vnc:

su - vnc
vncserver -localhost no

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04
Per impostazione predefinita, il protocollo RFB utilizza un intervallo di porte TCP da 5900 a 5906, noti come porte del display, ciascuna delle quali corrisponde a uno schermo del server X. Le porte sono associate agli schermi da :0 a :6. L'istanza di server VNC che abbiamo avviato ascolta sulla porta 5901 (schermo :1). Altre istanze possono funzionare su porte diverse con schermi :2, :3, ecc. Prima di procedere con ulteriori configurazioni, è necessario arrestare il server:

vncserver -kill :1

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

All'avvio, TigerVNC esegue lo script ~/.vnc/xstartup per configurare i parametri di configurazione. Creiamo il nostro script, facendo prima una copia di backup di quello esistente, se esiste:

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

La sessione dell'ambiente desktop XFCE viene avviata 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 cartella home. Lì l'utente può definire vari parametri del desktop grafico: rendering dei caratteri, colori del terminale, temi del cursore, ecc. È necessario rendere eseguibile lo script:

chmod 755 ~/.vnc/xstartup

A questo punto, la configurazione del server VNC è completata. Se lo avviamo con il comando vncserver -localhost no (con l'account utente vnc), possiamo connetterci utilizzando la password impostata in precedenza e vedere qualcosa di simile:

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04

Avvio del servizio tramite systemd

L'avvio manuale del server VNC non è adatto per l'uso in produzione, quindi configureremo un servizio di sistema. I comandi vengono eseguiti con i privilegi di root (utilizzando sudo). Per iniziare, creiamo un nuovo file unit per il nostro server:

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

Il simbolo @ nel nome consente di passare un argomento per la configurazione del servizio. Nel nostro caso, definisce la porta del display VNC. Il file 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

È quindi necessario informare systemd della nuova presenza del file e attivarlo:

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

Il numero 1 nel nome definisce il numero dello schermo.

Arrestiamo 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 ottenere un risultato simile.

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04

Collegamento al desktop

La nostra configurazione non utilizza crittografia, quindi i pacchetti di rete potrebbero essere intercettati da malintenzionati. Inoltre, nei server VNC vengono frequentemente trovate vulnerabilità, quindi non è consigliabile aprirli per l'accesso da internet. Per una connessione sicura su un computer locale, è necessario incapsulare il traffico in un tunnel SSH e poi configurare il client VNC. Su Windows, è possibile utilizzare un client SSH grafico (ad esempio, PuTTY). Per motivi di sicurezza, TigerVNC sul server ascolta solo localhost ed è inaccessibile direttamente dalle reti pubbliche:


sudo netstat -ap |more

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04
In Linux, FreeBSD, OS X e altri sistemi operativi simili a UNIX, il tunnel dal computer client si realizza tramite l'utilità ssh (sul server VNC deve essere in esecuzione sshd):

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

L'opzione -L associa la porta 5901 della connessione remota alla porta 5901 su localhost. L'opzione -C attiva la compressione e -N indica all'utilità ssh di non eseguire alcun comando remoto. L'opzione -l specifica il login per l'accesso remoto.

Dopo aver configurato 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 accedere al server VNC. Ora possiamo interagire in modo sicuro attraverso un tunnel crittografato con l'ambiente desktop XFCE sulla VPS. Nell'immagine dello schermo nell'emulatore di terminale è in esecuzione l'utilità top, per mostrare un consumo trascurabile di risorse computazionali da parte della macchina virtuale. Da qui in avanti, tutto dipenderà dalle applicazioni utente.

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04
È possibile installare e configurare un server VNC in Linux praticamente su qualsiasi VPS. Non sono necessarie configurazioni costose e ad alta intensità di risorse con emulazione della scheda video o l'acquisto di licenze software commerciali. Oltre alla nostra opzione di servizio di sistema, ce ne sono altre: esecuzione in modalità demone (tramite /etc/rc.local) all'avvio del sistema o su richiesta tramite inetd. Quest'ultima è interessante per creare configurazioni multiutente. Il superserver Internet avvierà il server VNC e collegherà il client ad esso, mentre il server VNC creerà un nuovo schermo e avvierà la sessione. Per l'autenticazione all'interno di essa è possibile utilizzare un gestore del display grafico (ad esempio, LightDM), e dopo la disconnessione del client, la sessione verrà chiusa e tutti i programmi in esecuzione sullo schermo termineranno.

VPS su Linux con interfaccia grafica: lanciamo il server VNC su Ubuntu 18.04

Fonte: habr.com

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