Accesso GUI remoto a un computer Linux usando Tightvnc con systemd
Il Gennaio 13, 2022 da adminQuesta è una guida per installare TightVNC su Raspberry Pi. L’ultima versione di Raspbian ora include RealVNC che è uno strumento alternativo di desktop remoto. Se si preferisce utilizzare RealVNC allora è facilmente abilitato attraverso lo strumento raspi-config, questa guida sarà utile per coloro che vogliono capire come creare altre applicazioni da eseguire all’avvio attraverso systemd.
La linea di comando è un ottimo modo per gestire un computer Linux remoto se non ti dispiace digitare i comandi, ma a volte è necessario essere in grado di visualizzare una GUI. A corto di un cavo molto lungo uno dei modi migliori per farlo è usare il protocollo VNC (Virtual Network Computing).
TightVNC vs Real VNC
Il server TightVNC crea una diversa finestra virtuale che viene replicata su una macchina diversa utilizzando il client TightVNC. Questo differisce da RealVNC che normalmente riecheggia lo schermo di default.
Quando la maggior parte delle persone pensano ad uno strumento di desktop remoto allora di solito pensano al modo in cui opera RealVNC. In questo caso quando si muove il mouse, o si lancia un’applicazione, viene visualizzato lo stesso output su uno schermo fisicamente collegato (normalmente HDMI) e su un client remoto in rete.
TightVNC è utile se si vuole eseguire qualcosa di diverso da ciò che è sullo schermo principale. Per esempio potresti usarlo in modo da avere un display di stato sullo schermo principale (via HDMI) con un display diverso usato per la configurazione che viene visualizzata su un portatile.
Un altro vantaggio di TightVNC è che è un software open source gratuito. Come tale non ha restrizioni d’uso ed è possibile visualizzare e modificare il codice sorgente. Real VNC è una versione commerciale di VNC e ha bisogno di una licenza. Real VNC è libero da usare per uso personale su Raspberry Pi, ma ha delle restrizioni se si vogliono fare altre cose con esso che possono richiedere una licenza commerciale. Questo include l’esecuzione dell’immagine Raspbian Desktop su un PC che non include il software commerciale.
Installazione di uno script di avvio usando Systemd
Queste sono le istruzioni su come configurare questo su Raspberry Pi (distribuzione basata su Debian). Dovrebbe essere simile per qualsiasi altra distribuzione basata su Debian (es. Ubuntu) che usa i file di avvio di Systemd. Alcune altre distribuzioni usano diversi strumenti di installazione del software e possibilmente diversi strumenti di configurazione init.
Se questo viene usato in combinazione con la guida per far funzionare il Raspberry Pi senza testa con Debian Linux allora può essere usato per configurare un Raspberry Pi per l’accesso remoto senza mai aver bisogno di collegarlo a un monitor.
Scegliere TightVNC
Ci sono diversi progetti software che supportano VNC. Ho scelto di usare TightVNC perché è un software open source gratuito (GPL2), fornisce compressione per permettergli di lavorare su una rete lenta (Internet) ed è facilmente disponibile nei repository del software.
Modello client server
VNC segue il tradizionale modello client sever. Il software del server gira sull’host a cui si vuole accedere, e il software del client gira sulla macchina locale che vuole controllare l’host. Il server e il client non devono essere necessariamente gli stessi (ad esempio il client può essere RealVNC quando il server è TightVNC), ma alcune caratteristiche possono funzionare solo quando vengono utilizzati lo stesso client e server.
Installare il software server TightVNC
Prima aggiornare le informazioni del repository software utilizzandosudo apt update
Questo è particolarmente importante se avete appena installato il sistema operativo come le informazioni del repository possono essere incomplete.
Installa il software del server dai repository:sudo apt install tightvncserver
Avvia il server e configura una password
La prima volta che avvii il server ti chiederà di impostare una password. Questa è la password che usi quando ti connetti da remoto.
/usr/bin/tightvncserver
Non c’è bisogno di creare una password di sola visualizzazione, a meno che tu non abbia una necessità specifica.
Quando il server si avvia ti dirà quale desktop virtuale è stato impostato. In questo caso:New 'X' desktop is raspberrypi:1
dice che è il desktop virtuale 1. Ti connetterai a questo usando :1 alla fine dell’indirizzo IP nel client, questo è quello che imposteremo per partire automaticamente più tardi.
Puoi eseguire più istanze. Ogni volta che avvii tightvncserver userà il prossimo desktop disponibile, ma nella maggior parte dei casi ne avrai bisogno solo uno.
Aggiungere Tightvnc all’avvio di systemd
Per far avviare automaticamente Tightvnc dobbiamo creare un nuovo file di avvio, che deve essere memorizzato nella directory /etc/systemd/system/ e finire con il suffisso “.service”. L’ho chiamato tightvncserver.service. Questo deve essere creato come utente root quindi usando sudosudo nano /etc/systemd/system/tightvncserver.service
-
-
Description=TightVNC remote desktop server
-
After=sshd.service
-
-
-
Type=dbus
-
ExecStart=/usr/bin/tightvncserver :1
-
User=pi
-
Type=forking
-
-
-
WantedBy=multi-user.target
Potresti dover cambiare il nome utente sulla linea 8. Attualmente è impostato su pi che è il nome utente predefinito sull’immagine Raspbian di Raspberry Pi. Impostare questo a qualsiasi nome utente che si desidera accedere a TightVNC come. Non mettere root come utente.
Cambia il file in modo che sia di proprietà di rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Rendi il file eseguibile eseguendosudo chmod 755 /etc/systemd/system/tightvncserver.service
È una buona idea provare lo script a questo punto piuttosto che aspettare fino a dopo un riavvio. Questo viene fatto usando:sudo systemctl start tightvncserver.service
Non preoccuparti se ottieni il seguente messaggio di errore, che è perché hai già avviato tightvncA VNC server is already running as :1
Abilita l’avvio al boot usandosudo systemctl enable tightvncserver.service
TightVNC ora partirà all’avvio. Ti consiglierei di riavviare a questo punto per assicurarti che stia funzionando, ma puoi semplicemente fermare e avviare il servizio usando il comando systemctl invece.
Nota che questo è progettato per eseguire solo un’istanza di TightVNC sul computer. Se si vuole essere in grado di avviare e fermare istanze specifiche di TightVNC, allora sarà necessario modificare lo script di avvio in modo appropriato.
Installazione del visualizzatore Tightvnc (client VNC) su un computer Linux
Su un computer Linux puoi installare il visualizzatore consudo apt install xtightvncviewer
o se questo non è nei repository prova:sudo apt-get install ssvnc
Questo funziona solo con distribuzioni basate su Debian / Ubuntu, per altre distribuzioni usa il normale gestore di pacchetti.
Nota che ssvnc – che è la versione che ho installato sul mio computer Kubuntu è basata su tightvnc, ma ha anche la possibilità di configurare il tunnelling ssh (vedi dopo) attraverso la GUI.
Login utilizzandoxtightvncviewer 192.168.1.6:1
(sostituire con il proprio indirizzo IP come appropriato)
Installazione di Tightvnc view su un computer Windows
Per accedere da Windows o utilizzando il Java Client scaricare da TightVNC.com
Securing TightVNC
TightVNC permette a chiunque conosca la password di accedere come l’utente sotto cui è in esecuzione. Lo fa anche senza crittografia, quindi chiunque può curiosare nella sessione. Fortunatamente c’è una soluzione sicura, che è quella di tunnelare la connessione su un login ssh (secure shell).
Il primo passo è limitare Tightvnc al solo computer locale. Questo viene fatto aggiungendo l’opzione -localhost quando si avvia tightvncserver. Per fare questo modifica la linea 7 nel file /etc/systemd/system/tightvncserver.service per leggere:>
ExecStart=/usr/bin/tightvncserver -localhost :1
Poi riavvia il server.
Per accedere usando ssh – prima accedi al computer host usando sshssh [email protected] -L 5901:localhost:5901
L’opzione -L crea il tunnel, dal computer corrente (default) porta 5901 al computer host (come localhost) porta 5901. La porta 5901 è la porta predefinita per il display 1, 5902 per il display 2 ecc.
Per connetterti usando tightvnc ora usa il comandoxtightvncviewer 127.0.0.1:1
Nota che il tuo precedente terminale sarà ora connesso al Raspberry Pi quindi dovrai avviare un nuovo terminale o scheda per eseguire il viewer.
Se si usa Windows allora il tunnel ssh può essere creato dall’interno di PuTTY
Poi ci si connette usando il client vnc usando 127.0.0.1:1.
Si può ora usare la GUI per eseguire applicazioni sul Raspberry Pi senza bisogno di un monitor o una tastiera. Se avete impostato il port forwarding sul vostro router, potete farlo su Internet.
Avviare il vostro window manager
Le istruzioni precedenti sono sufficienti per il Raspberry Pi con Raspbian (Debian). Su altri sistemi potrebbe essere necessario fare un ulteriore cambiamento di configurazione per avviare il normale gestore di finestre/lanciatore di applicazioni. Se ottieni uno schermo vuoto quando ti connetti, modifica il file ~/.vnc/xstartup e sostituisci la linea /etc/X11/Xsession con una delle seguenti come appropriato.
exec ck-launch-session startlxde#for an lxde sessionexec ck-launch-session gnome-session#for a gnome-sessionexec ck-launch-session openbox-session#for an openbox desktopexec ck-launch-session startxfce4#for an xfce desktopexec ck-launch-session icewm#for an icewm desktopexec ck-launch-session startkde#for a kde desktop
Per esempio con Ubuntu dovresti usare la voce per gnome, per xubuntu dovresti usare xfce e per kubuntu usare kde. Il Raspberry Pi usa lxde, ma questo viene avviato automaticamente sul Raspberry Pi non c’è bisogno di aggiungerlo al file xstartup.
Lascia un commento