Introduzione
Virtual Network Computing, o VNC, è un sistema di connessione che consente di utilizzare la tastiera e il mouse per interagire con un ambiente desktop grafico su un server remoto. Rende la gestione di file, software e impostazioni su un server remoto più facile per gli utenti che non sono ancora a proprio agio con la riga di comando.
In questa guida, si imposta un server VNC con TightVNC su un server Ubuntu 20.04 e connettersi ad esso in modo sicuro attraverso un tunnel SSH., Quindi, utilizzerai un programma client VNC sul tuo computer locale per interagire con il tuo server attraverso un ambiente desktop grafico.
Prerequisiti
Per completare questo tutorial, è necessario:
- Un server Ubuntu 20.04 con un utente amministrativo non root e un firewall configurato con UFW. Per impostare questo, seguire la nostra guida di installazione del server iniziale per Ubuntu 20.04.
- Un computer locale con un client VNC installato. Il client VNC utilizzato deve supportare le connessioni tramite tunnel SSH:
- Su Windows, è possibile utilizzare TightVNC, RealVNC o UltraVNC.,
- Su macOS, è possibile utilizzare il programma integrato di condivisione dello schermo, o può utilizzare un cross-platform app come RealVNC.
- Su Linux, è possibile scegliere tra molte opzioni, tra cui
vinagre
,krdc
, RealVNC o TightVNC.
Passo 1 — Installazione dell’ambiente desktop e del server VNC
Per impostazione predefinita, un server Ubuntu 20.04 non viene fornito con un ambiente desktop grafico o un server VNC installato, quindi inizierai installando quelli.,
Hai molte opzioni quando si tratta di quale server VNC e ambiente desktop si sceglie. In questo tutorial, installerai i pacchetti per l’ultimo ambiente desktop Xfce e il pacchetto TightVNC disponibile dal repository ufficiale di Ubuntu. Sia Xfce che TightVNC sono noti per essere leggeri e veloci, il che contribuirà a garantire che la connessione VNC sia fluida e stabile anche su connessioni Internet più lente.,
Dopo la connessione al server con SSH, aggiornare la lista dei pacchetti:
- sudo apt update
installare Xfce con il xfce4-goodies
pacchetto, che contiene alcuni miglioramenti per l’ambiente desktop:
- sudo apt install xfce4 xfce4-goodies
Durante l’installazione, si potrebbe essere richiesto di scegliere un display manager di default di Xfce. Un display manager è un programma che consente di selezionare e accedere a un ambiente desktop tramite un’interfaccia grafica., Utilizzerai Xfce solo quando ti connetti con un client VNC e in queste sessioni Xfce sarai già connesso come utente Ubuntu non root. Quindi, ai fini di questo tutorial, la scelta di display manager non è pertinente. Selezionare uno dei due e premere ENTER
.,
una Volta completata l’installazione, installare il server TightVNC:
- sudo apt install tightvncserver
quindi, eseguire il vncserver
comando per impostare un VNC password di accesso, creare la configurazione iniziale file e avviare il server VNC esempio:
- vncserver
Ti verrà richiesto di immettere e confermare una password per accedere al computer in remoto:
OutputYou will require a password to access your desktops.Password:Verify:
La password deve essere compresa tra i sei e gli otto caratteri. Password più di 8 caratteri verranno troncati automaticamente.,
Una volta verificata la password, avrai la possibilità di creare una password di sola visualizzazione. Gli utenti che accedono con la password di sola visualizzazione non saranno in grado di controllare l’istanza VNC con il mouse o la tastiera. Questa è un’opzione utile se si desidera dimostrare qualcosa ad altre persone che utilizzano il server VNC, ma questo non è richiesto.
Il processo crea quindi i file di configurazione predefiniti necessari e le informazioni di connessione per il server. Inoltre, avvia un’istanza server predefinita sulla porta 5901
., Questa porta è chiamata display port, ed è indicata da VNC come :1
. VNC può lanciare più istanze di altri display port, con :2
riferendosi alla porta 5902
:3
riferimento 5903
, e così via:
si noti che se si desidera modificare la password o aggiungere una password, è possibile farlo con il vncpasswd
comando:
- vncpasswd
A questo punto, il VNC server è installato e in esecuzione., Ora configuriamo per lanciare Xfce e darci l’accesso al server attraverso un’interfaccia grafica.
Passo 2 — Configurazione del server VNC
Il server VNC deve sapere quali comandi eseguire all’avvio. In particolare, VNC ha bisogno di sapere a quale ambiente desktop grafico dovrebbe connettersi.
I comandi che il server VNC esegue all’avvio si trovano in un file di configurazione chiamatoxstartup
nella cartella.vnc
nella directory home., Lo script di avvio è stato creato quando hai eseguito il comando vncserver
nel passaggio precedente, ma creerai il tuo per avviare il desktop Xfce.,e VNC server è configurato, prima di interrompere il server VNC istanza che è in esecuzione sulla porta 5901
con il seguente comando:
- vncserver -kill :1
L’output sarà simile a questa, anche se vedrete un altro PID:
OutputKilling Xtightvnc process ID 17648
Prima di modificare il xstartup
file, eseguire il backup originale:
- mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
e ‘ Ora di creare un nuovo xstartup
file e aprirlo in un editor di testo, ad esempio nano
:
- nano ~/.vnc/xstartup
Quindi aggiungere le seguenti righe al file:
#!/bin/bashxrdb $HOME/.Xresourcesstartxfce4 &
La prima riga è una shebang. Nei file eseguibili di testo normale su piattaforme * nix, uno shebang dice al sistema a quale interprete passare quel file per l’esecuzione. In questo caso, stai passando il file all’interprete Bash. Ciò consentirà ad ogni riga successiva di essere eseguita come comandi, in ordine.
Il primo comando nel file, xrdb $HOME/.Xresources
, indica al framework GUI di VNC di leggere il file .Xresources
dell’utente del server., .Xresources
è dove un utente può apportare modifiche a determinate impostazioni del desktop grafico, come i colori del terminale, i temi del cursore e il rendering dei font. Il secondo comando dice al server di avviare Xfce. Ogni volta che si avvia o si riavvia il server VNC, questi comandi verranno eseguiti automaticamente.
Salva e chiudi il file dopo aver aggiunto queste righe. Se hai usato nano
, fallo premendo CTRL + X
, Y
, quindi ENTER
.,
Per garantire che il server VNC sarà in grado di utilizzare questo nuovo file di avvio correttamente, devi renderlo eseguibile:
- chmod +x ~/.vnc/xstartup
riavviare il server VNC:
- vncserver -localhost
si Noti che questa volta il comando include -localhost
opzione, che lega il VNC server per il server dell’interfaccia di loopback. Ciò farà sì che VNC consenta solo le connessioni che provengono dal server su cui è installato.,
Nel passaggio successivo, stabilirai un tunnel SSH tra la tua macchina locale e il tuo server, essenzialmente ingannando VNC nel pensare che la connessione dalla tua macchina locale abbia avuto origine sul tuo server. Questa strategia aggiungerà un ulteriore livello di sicurezza intorno VNC, come gli unici utenti che saranno in grado di accedervi sono quelli che hanno già accesso SSH al server.
Vedrai un output simile a questo:
Con la configurazione in atto, sei pronto per connetterti al server VNC dalla tua macchina locale.,
Passo 3 — Collegamento sicuro al desktop VNC
VNC stesso non utilizza protocolli sicuri durante la connessione. Per connetterti in modo sicuro al tuo server, stabilirai un tunnel SSH e poi dirai al tuo client VNC di connetterti usando quel tunnel piuttosto che fare una connessione diretta.
Crea una connessione SSH sul tuo computer locale che inoltra in modo sicuro alla connessionelocalhost
per VNC., È possibile farlo tramite terminale su Linux o macOS con il seguente ssh
comando:
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
Ecco che cosa questo ssh
comando opzioni del media:
-
-L 59000:localhost:5901
:-L
opzione specifica che il dato porta del computer locale (59000
) deve essere inoltrata per l’host e la porta del server di destinazione (localhost:5901
, che significa porto5901
sul server di destinazione, definito comeyour_server_ip
)., Si noti che la porta locale specificata è in qualche modo arbitraria; finché la porta non è già associata a un altro servizio, è possibile utilizzarla come porta di inoltro per il tunnel. -
-C
: Questo flag consente la compressione che può aiutare a ridurre al minimo il consumo di risorse e accelerare le cose. -
-N
: Questa opzione indica assh
che non si desidera eseguire alcun comando remoto. Questa impostazione è utile quando si desidera inoltrare le porte., -
-l sammy your_server_ip
: Lo switch-l
consente di specificare l’utente che si desidera accedere come una volta che ci si connette al server. Assicurati di sostituiresammy
eyour_server_ip
con il nome dell’utente non root e l’indirizzo IP del tuo server.
Nota: Questo comando stabilisce un tunnel SSH che inoltra le informazioni dalla porta5901
sul server VNC alla porta59000
sulla macchina locale tramite la porta22
su ogni macchina, la porta predefinita per SSH., Supponendo che tu abbia seguito la guida all’installazione iniziale del server prerequisito per Ubuntu 20.04, avrai aggiunto una regola UFW per consentire le connessioni al tuo server su OpenSSH.
Questo è più sicuro della semplice apertura del firewall del server per consentire le connessioni alla porta 5901
, in quanto ciò consentirebbe a chiunque di accedere al server tramite VNC. Collegandosi tramite un tunnel SSH, si limita l’accesso VNC alle macchine che hanno già accesso SSH al server.,
Se si sta utilizzando PuTTY per connettersi al server, è possibile creare un tunnel SSH facendo clic destro sulla barra superiore della finestra di terminale, e quindi facendo clic su Modifica Impostazioni… opzione:
Trova la Connessione ramo nell’albero del menu sul lato sinistro dello Stucco Riconfigurazione finestra. Espandere il ramo SSH e fare clic su Tunnel., Sulle Opzioni di controllo e l’inoltro della porta SSH schermo, immettere 59000
come Porta Sorgente e localhost:5901
come Destinazione, come:
fare clic sul pulsante Aggiungi e quindi il pulsante “Applica” per implementare il tunnel.
Una volta che il tunnel è in esecuzione, utilizzare un client VNC per connettersi alocalhost:59000
. Ti verrà richiesto di autenticare utilizzando la password impostata nel passaggio 1.
Una volta connesso, vedrai il desktop Xfce predefinito., Dovrebbe essere qualcosa come questo:
È possibile accedere ai file nella vostra home directory con il file manager o da riga di comando, come si vede qui:
Premere CTRL+C
in un terminale locale per interrompere il tunnel SSH e tornare al prompt. Questo disconnetterà anche la tua sessione VNC.
Ora è possibile configurare il server VNC per l’esecuzione come servizio systemd.,
Passo 4 — Esecuzione di VNC come servizio di sistema
Impostando il server VNC per l’esecuzione come servizio systemd è possibile avviare, arrestare e riavviare come necessario, come qualsiasi altro servizio. È inoltre possibile utilizzare i comandi di gestione di systemd per garantire che VNC si avvii all’avvio del server.
Per prima cosa, crea un nuovo file di unità chiamato/etc/systemd/system/[email protected]
:
- sudo nano /etc/systemd/system/[email protected]
Il simbolo@
alla fine del nome ci farà passare un argomento che puoi usare nella configurazione del servizio., Verrà utilizzato per specificare la porta di visualizzazione VNC che si desidera utilizzare quando si gestisce il servizio.
Aggiungi le seguenti righe al file. Assicurati di modificare il valore di User, Group, WorkingDirectory e il nome utente nel valore di PIDFILE in modo che corrisponda al tuo nome utente:
Il comandoExecStartPre
interrompe VNC se è già in esecuzione. Il comandoExecStart
avvia VNC e imposta la profondità del colore su colore a 24 bit con una risoluzione di 1280×800. È possibile modificare anche queste opzioni di avvio per soddisfare le proprie esigenze., Inoltre, si noti che il comandoExecStart
include nuovamente l’opzione-localhost
.
Salva e chiudi il file.
quindi, rendere il sistema a conoscenza di nuove unità di file:
- sudo systemctl daemon-reload
Attivare l’unità di file:
- sudo systemctl enable [email protected]
1
dopo il @
segno significa che il numero di display il servizio dovrebbe apparire sopra, in questo caso il default :1
come è stato discusso nel Passaggio 2.,
Interrompere l’istanza corrente del server VNC, se è ancora in funzione:
- vncserver -kill :1
Quindi avviare come avviare qualsiasi altro servizio di systemd:
- sudo systemctl start vncserver@1
È possibile verificare che è iniziato con questo comando:
- sudo systemctl status vncserver@1
Se si avvia correttamente, l’output dovrebbe essere simile a questo:
Il server VNC è ora pronto per l’uso ogni volta che il server si avvia, e si possono gestire con systemctl
comandi come qualsiasi altro servizio di systemd.
Tuttavia, non ci sarà alcuna differenza sul lato client., Per riconnettersi, avviare nuovamente il tunnel SSH:
- ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
Quindi effettuare una nuova connessione utilizzando il software client VNC alocalhost:59000
per connettersi al server.
Conclusione
Ora hai un server VNC sicuro installato e funzionante sul tuo server Ubuntu 20.04. Ora sarete in grado di gestire i file, software e impostazioni con un’interfaccia grafica user-friendly, e sarete in grado di eseguire software grafico come browser web in remoto.