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

VPS su Linux con interfaccia grafica: avvio di un server VNC su Ubuntu 18.04
Alcuni utenti noleggiano VPS relativamente economici con Windows per eseguire servizi desktop remoti. Lo stesso può essere fatto su Linux senza ospitare il proprio hardware in un data center o noleggiare un server dedicato. Alcune persone necessitano di un ambiente grafico familiare per test e sviluppo o di un desktop remoto con un ampio canale per lavorare da dispositivi mobili. Sono disponibili numerose opzioni per l'utilizzo del sistema VNC (Virtual Network Computing) basato sul protocollo Remote FrameBuffer (RFB). In questo breve articolo ti diremo come configurarlo su una macchina virtuale con qualsiasi hypervisor.

Sommario:

Selezione di un server VNC
Installazione e configurazione
Avvio di un servizio tramite systemd
Connessione al desktop

Selezione di un server VNC

Il servizio VNC può essere integrato nel sistema di virtualizzazione e l'hypervisor lo collegherà ai dispositivi emulati e non sarà richiesta alcuna configurazione aggiuntiva. Questa opzione comporta un notevole sovraccarico e non è supportata da tutti i provider, anche in un'implementazione meno dispendiosa in termini di risorse, quando invece di emulare un dispositivo grafico reale, viene trasferita alla macchina virtuale un'astrazione semplificata (framebuffer). A volte il server VNC è collegato al server X in esecuzione, ma questo metodo è più adatto per accedere a una macchina fisica e su quella virtuale crea una serie di difficoltà tecniche. Il modo più semplice per installare un server VNC è con un server X integrato. Non richiede dispositivi fisici (scheda video, tastiera e mouse) né la loro emulazione tramite hypervisor, ed è quindi adatto a qualsiasi tipo di VPS.

Installazione e configurazione

Avremo bisogno di una macchina virtuale con Ubuntu Server 18.04 LTS nella sua configurazione predefinita. Esistono diversi server VNC nei repository standard di questa distribuzione: TightVNC, TigerVNC, x11vnc e altri. Abbiamo optato per TigerVNC, un attuale fork di TightVNC, che non è supportato dallo sviluppatore. La configurazione di altri server avviene in modo simile. È inoltre necessario scegliere un ambiente desktop: l'opzione ottimale, a nostro avviso, sarebbe XFCE a causa dei requisiti relativamente bassi di risorse di calcolo. Chi lo desidera può installare un altro DE o WM: tutto dipende dalle preferenze personali, ma la scelta del software influisce direttamente sulla necessità di RAM e core di calcolo.

VPS su Linux con interfaccia grafica: avvio di un 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

Successivamente è necessario installare il server VNC:

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

Eseguirlo come superutente è una cattiva idea. Crea un utente e un gruppo:

sudo adduser vnc

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

Aggiungiamo l'utente al gruppo sudo in modo che possa eseguire attività relative all'amministrazione. Se non è necessario, puoi saltare questo passaggio:

sudo gpasswd -a vnc sudo

Il passo successivo è eseguire il server VNC con privilegi utente vnc per creare una password sicura e file di configurazione nella directory ~/.vnc/. La lunghezza della password può essere compresa tra 6 e 8 caratteri (i caratteri extra vengono troncati). Se necessario viene impostata anche una password per la sola visualizzazione, ad es. senza accesso a tastiera e mouse. I seguenti comandi vengono eseguiti come utente vnc:

su - vnc
vncserver -localhost no

VPS su Linux con interfaccia grafica: avvio di un server VNC su Ubuntu 18.04
Per impostazione predefinita, il protocollo RFB utilizza l'intervallo di porte TCP da 5900 a 5906: questo è il cosiddetto. porte di visualizzazione, ciascuna corrispondente a uno schermo del server X. In questo caso le porte sono associate alle schermate da :0 a :6. L'istanza del server VNC che abbiamo avviato è in ascolto sulla porta 5901 (schermata: 1). Altre istanze possono funzionare su altre porte con schermate :2, :3, ecc. Prima di un'ulteriore configurazione, è necessario arrestare il server:

vncserver -kill :1

Il comando dovrebbe visualizzare qualcosa del genere: "Killing Xtigervnc process ID 18105... success!"

All'avvio TigerVNC, esegue lo script ~/.vnc/xstartup per configurare le impostazioni di configurazione. Creiamo il nostro script, salvando 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 dal 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é VNC legga il file .Xresources nella directory home. Lì l'utente può definire varie impostazioni grafiche del desktop: rendering dei caratteri, colori del terminale, temi del cursore, ecc. Lo script deve essere reso eseguibile:

chmod 755 ~/.vnc/xstartup

Questo completa la configurazione del server VNC. Se lo esegui con il comando vncserver -localhost no (come utente vnc), puoi connetterti con la password precedentemente specificata e vedere la seguente immagine:

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

Avvio di un servizio tramite systemd

L'avvio manuale di un server VNC non è adatto all'uso in combattimento, quindi configureremo un servizio di sistema. I comandi vengono eseguiti come root (usiamo sudo). Innanzitutto, creiamo un nuovo file unit per il nostro server:

sudo nano /etc/systemd/system/[email protected]

Il simbolo @ nel nome consente di passare un argomento per configurare il servizio. Nel nostro caso, specifica la porta display VNC. Il file unitario è composto da diverse sezioni:

[Unit]
Description=TigerVNC server
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 devi notificare a systemd il nuovo file e attivarlo:

sudo systemctl daemon-reload
sudo systemctl enable [email protected]

Il numero 1 nel nome specifica il numero dello schermo.

Arresta il server VNC, avvialo come servizio e controlla lo stato:

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

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

Se il servizio è in esecuzione, dovremmo ottenere qualcosa di simile.

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

Connessione al desktop

La nostra configurazione non utilizza la crittografia, quindi i pacchetti di rete possono essere intercettati dagli aggressori. Inoltre, nei server VNC abbastanza spesso trovare vulnerabilità, quindi non dovresti aprirli per l'accesso da Internet. Per connetterti in modo sicuro sul tuo computer locale, devi impacchettare il traffico in un tunnel SSH e quindi configurare un client VNC. Su Windows è possibile utilizzare un client SSH grafico (ad esempio PuTTY). Per sicurezza, TigerVNC sul server ascolta solo localhost e non è direttamente accessibile dalle reti pubbliche:


sudo netstat -ap |more

VPS su Linux con interfaccia grafica: avvio di un server VNC su Ubuntu 18.04
In Linux, FreeBSD, OS X e altri sistemi operativi simili a UNIX, un tunnel dal computer client viene creato utilizzando l'utilità ssh (sshd deve essere in esecuzione sul server VNC):

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 abilita la compressione e l'opzione -N dice a ssh di non eseguire il 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 specificata per accedere al server VNC. Ora possiamo comunicare in modo sicuro tramite un tunnel crittografato con l'ambiente desktop grafico XFCE sul VPS. Nello screenshot, l'utilità principale è in esecuzione nell'emulatore di terminale per mostrare il basso consumo di risorse di elaborazione della macchina virtuale. Quindi tutto dipenderà dalle applicazioni dell'utente.

VPS su Linux con interfaccia grafica: avvio di un server VNC su Ubuntu 18.04
Puoi installare e configurare un server VNC in Linux su quasi tutti i VPS. Ciò non richiede configurazioni costose e dispendiose in termini di risorse con l'emulazione della scheda video o l'acquisto di licenze software commerciali. Oltre all'opzione del servizio di sistema che abbiamo considerato, ce ne sono altre: avvio in modalità demone (tramite /etc/rc.local) all'avvio del sistema o su richiesta tramite inetd. Quest'ultimo è interessante per creare configurazioni multiutente. Il Superserver Internet avvierà il server VNC e connetterà il client ad esso, quindi il server VNC creerà una nuova schermata e avvierà la sessione. Per autenticarsi al suo interno è possibile utilizzare un display manager grafico (ad esempio, LightDM) e dopo aver disconnesso il client, la sessione verrà chiusa e tutti i programmi che funzionano con lo schermo verranno terminati.

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

Fonte: habr.com

Aggiungi un commento