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

VPS su Linux con interfaccia grafica: avvio di un server RDP su Ubuntu 18.04
В articolo precedente abbiamo discusso dell'esecuzione di un server VNC su una macchina virtuale di qualsiasi tipo. Questa opzione presenta molti svantaggi, il principale dei quali sono gli elevati requisiti per la velocità di trasmissione dei canali di trasmissione dei dati. Oggi proveremo a connetterci ad un desktop grafico su Linux tramite RDP (Remote Desktop Protocol). Il sistema VNC si basa sulla trasmissione di matrici di pixel utilizzando il protocollo RFB (Remote Framebuffer) e RDP consente di inviare primitive grafiche più complesse e comandi di alto livello. Viene in genere utilizzato per ospitare Servizi Desktop remoto su Windows, ma sono disponibili anche server per Linux.

Sommario:

Installazione dell'ambiente grafico
Russificazione del server e installazione del software
Installazione e configurazione di un server RDP
Configurazione firewall
Connessione a un server RDP
Gestione sessioni e sessioni utente
Cambiare layout di tastiera

Installazione dell'ambiente grafico

Prenderemo una macchina virtuale con Ubuntu Server 18.04 LTS con due core di calcolo, quattro gigabyte di RAM e un disco rigido da venti gigabyte (HDD). Una configurazione più debole non è adatta per un desktop grafico, anche se dipende dai compiti da risolvere. Non dimenticare di utilizzare il codice promozionale Habrahabr10 per ottenere uno sconto del 10% sul tuo ordine.

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

Come nel caso precedente, abbiamo scelto XFCE per i suoi requisiti di risorse di calcolo relativamente bassi.

Russificazione del server e installazione del software

Spesso le macchine virtuali vengono distribuite solo con la localizzazione inglese. Sul desktop potresti aver bisogno del russo, che è facile da configurare. Innanzitutto, installiamo le traduzioni per i programmi di sistema:

sudo apt-get install language-pack-ru

Impostiamo la localizzazione:

sudo update-locale LANG=ru_RU.UTF-8

Lo stesso effetto può essere ottenuto modificando manualmente il file /etc/default/locale.

Per la localizzazione di GNOME e KDE, il repository contiene i pacchetti Language-Pack-gnome-ru e Language-Pack-kde-ru: ne avrai bisogno se utilizzi programmi da questi ambienti desktop. In XFCE, le traduzioni vengono installate con le applicazioni. Successivamente puoi installare i dizionari:

# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru

# Тезаурус для LibreOffice
sudo apt-get install mythes-ru

# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dict

Inoltre, per alcuni programmi applicativi potrebbe essere necessaria l'installazione di traduzioni:

# Браузер Firefox
sudo apt-get install firefox firefox-locale-ru

# Почтовый клиент Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru

# Офисный пакет LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru

Questo completa la preparazione dell'ambiente desktop, non resta che configurare il server RDP.

Installazione e configurazione di un server RDP

I repository Ubuntu hanno un server Xrdp distribuito gratuitamente, che utilizzeremo:

sudo apt-get install xrdp

Se tutto è andato bene, il server dovrebbe avviarsi automaticamente:

sudo systemctl status xrdp

VPS su Linux con interfaccia grafica: avvio di un server RDP su Ubuntu 18.04
Il server Xrdp funziona con i diritti utente xrdp e per impostazione predefinita accetta il certificato /etc/ssl/private/ssl-cert-snakeoil.key, che può essere sostituito con il tuo. Per avere accesso in lettura al file, è necessario aggiungere l'utente al gruppo ssl-cert:

sudo adduser xrdp ssl-cert

Le impostazioni predefinite si trovano nel file /etc/default/xrdp e tutti gli altri file di configurazione del server si trovano nella directory /etc/xrdp. I parametri principali si trovano nel file xrdp.ini, che non necessita di essere modificato. La configurazione è ben documentata e le pagine man corrispondenti sono incluse:

man xrdp.ini
man xrdp

Non resta che modificare lo script /etc/xrdp/startwm.sh, che viene eseguito quando viene inizializzata la sessione utente. Per prima cosa, facciamo una copia di backup dello script dalla distribuzione:

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh

Per avviare l'ambiente desktop XFCE, avrai bisogno di uno script simile a questo:

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4

Nota: negli script è meglio scrivere il percorso completo dei file eseguibili: questa è una buona abitudine. Rendiamo eseguibile lo script e a questo punto il setup del server Xrdp può considerarsi completo:

sudo chmod 755 /etc/xrdp/startwm.sh

Riavviare il server:

sudo systemctl restart xrdp

Configurazione firewall

Per impostazione predefinita, Xrdp ascolta la porta TCP 3389 su tutte le interfacce. A seconda della configurazione del server virtuale, potrebbe essere necessario configurare un firewall Netfilter. Su Linux questo viene solitamente fatto utilizzando l'utilità iptables, ma su Ubuntu è meglio usare ufw. Se si conosce l'indirizzo IP del client, la configurazione si effettua con il seguente comando:

sudo ufw allow from IP_Address to any port 3389

Puoi consentire connessioni da qualsiasi IP in questo modo:

sudo ufw allow 3389

Il protocollo RDP supporta la crittografia, ma esporre il server Xrdp alle reti pubbliche è una cattiva idea. Se il client non ha un IP fisso, il server dovrebbe ascoltare solo localhost per aumentare la sicurezza. È meglio accedervi tramite un tunnel SSH, che reindirizzerà in modo sicuro il traffico dal computer client. Abbiamo un approccio simile utilizzato nell'articolo precedente per il server VNC.

Connessione a un server RDP

Per lavorare con l'ambiente desktop, è meglio creare un utente separato non privilegiato:

sudo adduser rdpuser

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

È possibile connettersi al server utilizzando qualsiasi client RDP, incluso il client integrato di Servizi Desktop remoto di Windows. Se Xrdp è in ascolto sull'interfaccia esterna, non saranno necessarie ulteriori azioni. È sufficiente specificare l'indirizzo IP, il nome utente e la password del VPS nelle impostazioni di connessione. Dopo la connessione, vedremo qualcosa del genere:

VPS su Linux con interfaccia grafica: avvio di un server RDP su Ubuntu 18.04
Dopo la configurazione iniziale dell'ambiente desktop, otterremo un desktop a tutti gli effetti. Come puoi vedere, non consuma molte risorse, anche se tutto dipenderà dalle applicazioni utilizzate.

VPS su Linux con interfaccia grafica: avvio di un server RDP su Ubuntu 18.04
Se il server Xrdp ascolta solo localhost, il traffico sul computer client dovrà essere impacchettato in un tunnel SSH (sshd deve essere in esecuzione sul VPS). Su Windows, puoi utilizzare un client SSH grafico (ad esempio, PuTTY) e sui sistemi UNIX hai bisogno dell'utilità ssh:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

Dopo l'inizializzazione del tunnel, il client RDP non si connetterà più al server remoto, ma all'host locale.

Con i dispositivi mobili è più difficile: sarà necessario acquistare client SSH in grado di sollevare un tunnel e in iOS e iPadOS il funzionamento in background di applicazioni di terze parti è difficile a causa di un'ottimizzazione eccessiva del consumo energetico. Su iPhone e iPad non sarai in grado di creare un tunnel in un'applicazione separata; avrai bisogno di un'applicazione Harvester in grado di stabilire essa stessa una connessione RDP tramite SSH. Come, ad esempio Remoter Pro.

Gestione sessioni e sessioni utente

La capacità di lavoro multiutente è implementata direttamente nel server Xrdp e non richiede configurazioni aggiuntive. Dopo aver avviato il servizio tramite systemd, un processo viene eseguito in modalità demone, ascolta sulla porta 3389 e comunica tramite localhost con il gestore della sessione.

ps aux |grep xrdp

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

sudo netstat -ap |grep xrdp

VPS su Linux con interfaccia grafica: avvio di un server RDP su Ubuntu 18.04
Il gestore della sessione di solito non è visibile agli utenti, perché il login e la password specificati nelle impostazioni del client gli vengono trasferiti automaticamente. Se ciò non accade o si verifica un errore durante l'autenticazione, al posto del desktop apparirà una finestra di login interattiva.

VPS su Linux con interfaccia grafica: avvio di un server RDP su Ubuntu 18.04
L'avvio automatico del gestore sessioni è specificato nel file /etc/default/xrdp e la configurazione è archiviata in /etc/xrdp/sesman.ini. Per impostazione predefinita assomiglia a questo:

[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh

[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false

[Sessions]

Non devi cambiare nulla qui, devi solo disabilitare l'accesso con i diritti di root (AllowRootLogin=false). Per ogni utente autorizzato nel sistema, viene avviato un processo xrdp separato: se ci si disconnette senza terminare la sessione, i processi utente continueranno a essere eseguiti per impostazione predefinita e sarà possibile connettersi nuovamente alla sessione. Le impostazioni possono essere modificate nel file /etc/xrdp/sesman.ini (sezione [Sessioni]).

Cambiare layout di tastiera

Di solito non ci sono problemi con gli appunti bidirezionali, ma con il layout della tastiera russa dovrai giocare un po' (la locale russa dovrebbe essere già installato). Modifichiamo le impostazioni della tastiera del server Xrdp:

sudo nano /etc/xrdp/xrdp_keyboard.ini

È necessario aggiungere le seguenti righe alla fine del file di configurazione:

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru

Non resta che salvare il file e riavviare Xrdp:

sudo systemctl restart xrdp

Come puoi vedere, non è difficile configurare un server RDP su un VPS Linux, ma articolo precedente Abbiamo già discusso della configurazione VNC. Oltre a queste tecnologie esiste un'altra opzione interessante: il sistema X3Go che utilizza un protocollo NX 2 modificato. Ce ne occuperemo nella prossima pubblicazione.

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

Fonte: habr.com

Aggiungi un commento