User Tools

Site Tools


doc:appunti:linux:tux:rustdesk

This is an old revision of the document!


Desktop remoto con RustDesk

RustDesk è un software di accesso remoto open source disponibile per GNU/Linux, Windows, macOS, Android, ecc. Oltre ad essere open source, viene rilasciato sia il software client che il software server. È quindi possibile gestire in proprio il server pubblico per il rendezvous e il relay. Tale server consente a due client eventualmente dietro a firewall di interagire fra di loro.

Qui gli appunti per l'installazione di RustDesk su Debian GNU/Linux 12 Bookworm.

Download dei pacchetti

Per GNU/Linux viene offerto il pacchetto per Ubuntu, fortunatamente tale pacchetto si installa senza difficoltà anche su Debian 12 Bookworm. Si è installata la versione 1.1.14 scaricando i pacchetti Debian dal repository GitHub:

Installazione del server

Il server ha una duplice funzione: quella di rendezvous server e quella di relay server. La prima ha il compito di consentire a due client di scoprire l'indirizzo IP pubblico del corrispondente e la porta UDP a cui risponde. Quando i due interlocutori hanno queste informazioni possono tentare la connessione diretta tra di loro, adottando eventualmente tecniche di TCP hole punching. Se la connessione diretta non riesce, i client possono sfruttare il server come relay, in questo caso il traffico IP non viene veicolato direttamente tra i due client, ma transita dal server che lo reinoltra a destinazione.

Le due componenti sono installabili su Debian GNU/Linux separatamente grazie ai due pacchetti disponibili:

  • rustdesk-server-hbbr_1.1.14_amd64.deb (ID/Rendezvous server)
  • rustdesk-server-hbbs_1.1.14_amd64.deb (relay server)

Al termine dell'installazione ci saranno i due processi in esecuzione /usr/bin/hbbr e /usr/bin/hbbs che corrispondono ai servizi systemd rustdesk-hbbr.service e rustdesk-hbbs.service rispettivamente. Con systemctl è possibile avviarli, fermarli e conoscerne lo status. Ad esempio:

systemctl status rustdesk-hbbr.service

I file di log vengono creati in /var/log/rustdesk-server/.

Porte da aprire sul firewall

Queste le porte IP utilizzate dai due processi:

hbbs
21115 TCP NAT type test.
21116 TCP TCP hole punching.
21118 TCP Support for web clients.
21116 UDP ID registration and heartbeat service.
54176 UDP The server uses an UDP random port, which changes on each restart.
hbbr
21117 TCP Relay services.
21119 TCP Support for web clients.

Il server hbbs impegna una porta UDP diversa (casuale) ad ogni avvio, non è necessario aprire tale porta sul firewall. Se non si utilizza il supporto web anche le porte 21118 e 21119 possono restare chiuse.

Chiave crittografica

Un'altro parametro necessario per la connessione al server è la chiave crittografica; sarà necessario indicarla quando si configura il client. Tale chiave viene generata all'installazione e salvata nel file /var/lib/rustdesk-server/id_ed25519.pub. Si tratta di una stringa alfanumerica di 44 caratteri.

Installazione del client

Si installa manualmente il pacchetto rustdesk-1.4.2-x86_64.deb e quindi si installano tutte le dipendenze mancanti:

dpkg -i rustdesk-1.4.2-x86_64.deb
apt --fix-broken install

Viene installato il servizio rustdesk.service che può essere controllato con i normali comandi systemctl.

systemctl status rustdesk.service

Il servizio consente di ricevere le richieste di connessione remota ed è gestito da un processo eseguito a nome di root:

/usr/bin/rustdesk --service

Il processo impegna due porte UDP, la 21119 e una scelta casualmente ad ogni avvio.

Quando un utente non privilegiato effettua il login vengono avviati due processi a suo nome:

/usr/share/rustdesk/rustdesk --server
/usr/share/rustdesk/rustdesk --tray

Il processo server si occuperà di ricevere le connessioni remote offrendo il desktop in esecuzione a nome dell'utente, il processo tray invece visualizza l'icona nel system tray (area delle notifiche).

Se il processo systemd non è in esecuzione, l'utente non privilegiato può comunque avviare il client lanciando l'eseguibile rustdesk. In tal caso la schermata home offre la possibilità di avviare il processo a livello di sistema (è richiesta l'autenticazione dell'utente tramite sudo).

File di configurazione

Processo system-wide

Il processo client ha doppia personalità: da un lato esiste come processo system-wide avviato da systemd e quindi disponibile a prescindere dall'utente che effettua il login. Tale processo scrive la propria configurazione in /root/.config/rustdesk/. In particolare viene generato e salvato l'ID del client che sarà necessario per connettersi remotamente. È possibile conoscre l'ID anche da riga di comando:

rustdesk --get-id

Processo user-space

Quando l'utente non privilegiato esegue il programma rustdesk viene creata la configurazione personale in $HOME/.config/rustdesk/. Se è attivo il processo system-wide la configurazione viene inizializzata con i parametri system-wide (ad esempio il nome del server a cui collegarsi e la chiave crittografica).

Configurazione

I parametri che più facilmente si vorranno personalizzare nella configurazione del client sono:

ID/Relay server Nome DNS o indirizzo IP del server rendezvous e relay.
Key Chiave crittografica per la connessione al server.
One time password Password usa e getta per la connessione da remoto.
Permanent password Password permanente per la connessione da remoto.

Questi parametri sono impostabili dalla pagina home del programma anche se è eseguito dall'utente non privilegiato, ma è necessario che possa ottenere i privilegi di amministratore tramite il sistema sudo.

Il menu Settings è accessibile dall'icona three dots visibile a fianco dell'ID. Cliccando sul tab Network è necessario quindi cliccare su Unlock network settings e autenticarsi tramite sudo. Per scegliere un ID/Relay server custom è sufficiente indicare il nome (o indirizzo IP) e la relativa key.

Sempre nella pagina home è possibile configurare la password di accesso cliccando sull'icona Change password, quindi si sceglie Unlock security settings che richiede l'autenticazione sudo. In questo modo è possibile configurare la combinazione desiderata di one time e permanent password.

Web references

doc/appunti/linux/tux/rustdesk.1759221038.txt.gz · Last modified: by niccolo