This is an old revision of the document!
Table of Contents
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.