Condividi tramite


Installare e configurare xrdp per l'uso di Desktop remoto con Ubuntu

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Quando non si ha esperienza con Linux o per scenari di risoluzione dei problemi rapidi, l'uso di Desktop remoto può essere più semplice rispetto all'accesso SSH (Secure Shell). Questo articolo illustra in dettaglio come installare e configurare un ambiente desktop (xfce) e desktop remoto (xrdp) per la macchina virtuale Linux che esegue Ubuntu.

L'articolo è stato scritto e testato usando una macchina virtuale Ubuntu 18.04.

Nota

L'uso di Desktop remoto su Internet introduce un notevole "ritardo" (latenza di input) rispetto all'uso del desktop locale. Questo può essere influenzato da più fattori, tra cui velocità Internet locale e distanza dal data center in cui è ospitata la macchina virtuale. Questo ritardo non riflette in genere le prestazioni della macchina virtuale stessa.

Prerequisiti

Questo articolo richiede una macchina virtuale Ubuntu 18.04 LTS o Ubuntu 20.04 LTS esistente in Azure. Se è necessario creare una macchina virtuale, usare uno dei metodi seguenti:

Installare un ambiente desktop nella VM Linux

La maggior parte delle macchine virtuali Linux in Azure non dispone di un ambiente desktop installato per impostazione predefinita. Le macchine virtuali Linux vengono comunemente gestite usando connessioni SSH anziché un ambiente desktop, ma esistono diversi ambienti desktop che è possibile scegliere di installare. A seconda dell'ambiente desktop scelto, consuma fino a 2 GB di spazio su disco e richiede fino a dieci minuti per installare e configurare tutti i pacchetti necessari.

Nell'esempio seguente l'ambiente desktop leggero xfce4 viene installato in una macchina virtuale Ubuntu. I comandi per le altre distribuzioni sono leggermente diversi (ad esempio, usare yum per installare in Red Hat Enterprise Linux e configurare regole selinux appropriate, oppure usare zypper per installare in SUSE).

Innanzitutto, stabilire una connessione SSH alla VM. Nell'esempio seguente viene eseguita la connessione alla macchina virtuale denominata myvm.westus.cloudapp.azure.com con il nome utente azureuser. Usare valori personalizzati:

ssh azureuser@myvm.westus.cloudapp.azure.com

Se si usa Windows e sono necessarie altre informazioni sull'uso di SSH, vedere Come usare le chiavi SSH con Windows.

Installare quindi xfce usando apt:

sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install xfce4
sudo apt install xfce4-session

Installare e configurare un server di desktop remoto

Ora che è installato un ambiente desktop, configurare un servizio Desktop remoto per l'ascolto delle connessioni di accesso remoto in ingresso. xrdp è un server Remote Desktop Protocol (RDP) open source che è disponibile nella maggior parte delle distribuzioni Linux e funziona bene con xfce. Installare xrdp nella VM Ubuntu come indicato di seguito:

sudo apt-get -y install xrdp
sudo systemctl enable xrdp

In Ubuntu 20 è necessario concedere l'accesso al certificato a un utente xrdp:

sudo adduser xrdp ssl-cert

Indicare a xrdp quale ambiente desktop usare quando si avvia la sessione. Configurare xrdp per usare xfce come ambiente desktop come indicato di seguito:

echo xfce4-session >~/.xsession

Riavviare il servizio xrdp per rendere effettive le modifiche, come indicato di seguito:

sudo systemctl restart xrdp

Impostare una password per l'account utente locale

Se la password dell'account utente è stata impostata al momento della creazione della macchina virtuale, ignorare questo passaggio. Se si usa solo l'autenticazione con chiave SSH e non si dispone di una password dell'account locale impostata, specificare una password prima di usare xrdp per accedere alla macchina virtuale. xrdp non può accettare chiavi SSH per l'autenticazione. Nell'esempio seguente viene specificata una password per l'account utente azureuser:

sudo passwd azureuser

Nota

Se attualmente gli accessi tramite password non sono permessi, l'impostazione della password non aggiorna la configurazione SSHD per consentirli. Dal punto di vista della sicurezza, l'utente potrebbe desiderare connettersi alla macchina virtuale con un tunnel SSH usando l'autenticazione tramite chiave e poi connettersi a xrdp. In questo caso, ignorare il passaggio seguente sulla creazione di una regola del gruppo di sicurezza di rete per consentire il traffico di desktop remoto.

Creare una regola del gruppo di sicurezza di rete per il traffico di Desktop remoto

Per consentire al traffico di Desktop remoto di raggiungere la VM Linux, è necessario creare una regola del gruppo di sicurezza di rete che consenta al TCP sulla porta 3389 di raggiungere la macchina virtuale. Per altre informazioni sulle regole dei gruppi di sicurezza di rete, vedere Definizione di gruppo di sicurezza di rete. È anche possibile usare il portale di Azure per creare una regola del gruppo di sicurezza di rete.

L'esempio seguente crea una regola del gruppo di sicurezza di rete con il comando az vm open-port sulla porta 3389. Dall'interfaccia della riga di comando di Azure, non dalla sessione SSH alla macchina virtuale, aprire la regola di gruppo di sicurezza di rete seguente:

az vm open-port --resource-group myResourceGroup --name myVM --port 3389

Connettere la macchina virtuale Linux con un client di Desktop remoto

Aprire il client di Desktop remoto locale e connettersi all'indirizzo IP o nome DNS della VM Linux.

Screenshot del client Desktop remoto.

Immettere il nome utente e la password per l'account utente nella macchina virtuale come indicato di seguito:

Screenshot della schermata di accesso xrdp.

Dopo l'autenticazione, l'ambiente desktop xfce verrà caricato e apparirà come nell'esempio seguente:

ambiente desktop xfce tramite xrdp

Se il client RDP locale usa l'autenticazione di livello di rete (NLA), potrebbe essere necessario disattivare questa impostazione di connessione. XRDP attualmente non supporta NLA. È anche possibile considerare soluzione RDP alternative che supportano NLA, come FreeRDP.

Risoluzione dei problemi

Se non è possibile connettersi alla macchina virtuale Linux usando un client di Desktop remoto, usare netstat nella macchina virtuale Linux per verificare che la macchina stia ascoltando le connessioni RDP come indicato di seguito:

sudo netstat -plnt | grep rdp

Nell'esempio seguente viene mostrata la macchina virtuale in ascolto sulla porta TCP 3389 come previsto:

tcp     0     0      127.0.0.1:3350     0.0.0.0:*     LISTEN     53192/xrdp-sesman
tcp     0     0      0.0.0.0:3389       0.0.0.0:*     LISTEN     53188/xrdp

Se il servizio xrdp-sesman non è in ascolto, riavviare il servizio in una macchina virtuale Ubuntu come indicato di seguito:

sudo systemctl restart xrdp

Controllare i log in /var/log nella macchina virtuale Ubuntu per indicazioni sul perché il servizio non risponde. È possibile anche monitorare il syslog durante un tentativo di connessione Desktop remoto per visualizzare eventuali errori:

tail -f /var/log/syslog

Altre distribuzioni Linux, ad esempio Red Hat Enterprise Linux e SUSE, possono presentare modi diversi per riavviare i servizi e posizioni dei file di log alternative da controllare.

Se non si riceve alcuna risposta nel client di Desktop remoto e non viene visualizzato nessun evento nel log di sistema, questo comportamento indica che il traffico di Desktop remoto non riesce a raggiungere la macchina virtuale. Controllare le regole del gruppo di sicurezza di rete per assicurarsi che esista una regola che consenta TCP sulla porta 3389. Per altre informazioni, vedere Risolvere i problemi di connettività delle applicazioni in una macchina virtuale di Azure per Linux.

Passaggi successivi

Per altre informazioni sulla creazione e l'uso di chiavi SSH con macchine virtuali Linux, vedere Creare una coppia di chiavi SSH pubblica e privata per le macchine virtuali di Linux.

Per informazioni sull'uso di SSH da Windows, vedere Come usare SSH con Windows in Azure.