Come utilizzare Apache Guacamole per creare una connessione VNC
Su questa pagina
- Prerequisiti
- Passaggio 1 - Installa la GUI desktop sul tuo server
- Passaggio 2 - Installa TigerVNC Server
- Passaggio 3 - Crea le credenziali utente VNC
- Passaggio 4 - Crea il file VNC Systemd Unit
- Passaggio 5 - Avvia il server VNC
- Passaggio 6: configurazione del firewall
- Passaggio 7 - Crea una connessione VNC al server CentOS/Rocky Linux/AlmaLinux
- Accedi alla tua macchina usando VNC
- Crea un tunnel SSH
- Accedi alla tua macchina usando VNC
Di recente, hai imparato come installare e utilizzare Apache Guacamole per creare una connessione SSH su un server basato su Rocky Linux 8. Uno degli usi più popolari di Guacamole è usarlo come visualizzatore VNC (Virtual Network Computing). Utilizzando VNC, puoi accedere al tuo desktop o a un server da qualsiasi luogo senza installare alcun client di terze parti.
In questo tutorial imparerai come installare VNC sul tuo server Linux e utilizzare Guacamole per creare una connessione VNC. Tratteremo tutte le distribuzioni comuni e specificheremo le differenze laddove necessario.
Prerequisiti
-
A server running Rocky Linux, CentOS, AlmaLinux, Ubuntu or Debian.
-
Apache Guacamole should be installed. tutorials for the same.
-
A non-root user with sudo privileges is available on the server you are connecting to.
-
A minimum of 2 CPU cores and 4GB RAM on your remote servers for a smooth VNC connection.
-
Make sure everything is updated.
CentOS / Rocky Linux / AlmaLinux
$ sudo dnf update
Ubuntu / Debian
$ sudo apt update && sudo apt upgrade
-
Install basic utility packages. Some of them may already be installed.
CentOS / Rocky Linux / AlmaLinux
$ sudo dnf install wget curl nano unzip yum-utils -y
Ubuntu / Debian
$ sudo apt install wget curl nano unzip -y
Passaggio 1: installa la GUI desktop sul tuo server
Per il nostro tutorial, installeremo l'ambiente grafico Xfce. Puoi, tuttavia, scegliere di installare qualsiasi ambiente di tua scelta. Eseguire i seguenti comandi per installare una GUI.
CentOS/Rocky Linux/AlmaLinux
$ sudo dnf install -y epel-release $ sudo dnf groupinstall -y "Xfce" "base-x" $ sudo systemctl set-default graphical $ sudo reboot
Se hai seguito il nostro tutorial su Apache Guacamole, il repository EPEL sarà già installato in modo da poter saltare il primo comando. Il secondo comando installa l'ambiente grafico effettivo e le librerie e il terzo comando imposta l'ambiente GUI come predefinito. È necessario riavviare il server affinché l'installazione abbia effetto.
Ubuntu/Debian
$ sudo apt install xfce4 xfce4-goodies $ sudo systemctl set-default graphical $ sudo reboot
Passo 2 - Installa TigerVNC Server
Esistono molte applicazioni server VNC che puoi scegliere di installare sul tuo sistema. Per il nostro tutorial, installeremo il software del server TigerVNC.
Eseguire il seguente comando per installare il server TigerVNC.
CentOS/Rocky Linux/AlmaLinux
$ sudo dnf install tigervnc-server
Ubuntu/Debian
$ sudo apt install tigervnc-standalone-server
Passaggio 3: creare le credenziali utente VNC
Il passaggio successivo consiste nel creare un utente di sistema per VNC da cui verrà effettuata la connessione.
CentOS/Rocky Linux/AlmaLinux
Eseguire i seguenti comandi per creare un nuovo utente e impostare una password. Sostituisci
vncuser
con un nome utente a tua scelta.$ sudo adduser vncuser $ sudo passwd vncuser
Il prossimo passo è creare una password di accesso che verrà utilizzata per connettersi dal client VNC al server sulla tua macchina.
Passa a
vncuser
.$ sudo su - vncuser
Imposta una password di accesso VNC.
$ vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? y Password: Verify:
Ti verrà chiesto di creare una password e di verificarla. Successivamente, ti verrà chiesto se desideri creare una password di sola visualizzazione. Una password di sola visualizzazione è utile se si desidera limitare l'accesso VNC alla sola visualizzazione del sistema e proibire qualsiasi interazione tramite mouse o tastiera. Inserisci
y
se vuoi impostare una tale password o inseriscin
per terminare il processo.Uscire dalla shell
vncuser
.$ exit
Ubuntu/Debian
Eseguire il seguente comando per creare un nuovo utente e impostare una password. Sostituisci
vncuser
con un nome utente a tua scelta.$ sudo adduser vncuser Adding user `vncuser' ... Adding new group `vncuser' (1001) ... Adding new user `vncuser' (1001) with group `vncuser' ... Creating home directory `/home/vncuser' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for vncuser Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
Passa a
vncuser
.$ sudo su - vncuser
Imposta una password di accesso VNC.
$ vncpasswd Password: Verify: Would you like to enter a view-only password (y/n)? y Password: Verify:
Dobbiamo configurare il file di avvio affinché TigerVNC utilizzi Xfce.
Apri il file
~/.vnc/xstartup
per modificarlo.$ sudo nano ~/.vnc/xstartup
Incolla il seguente codice al suo interno.
#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS exec startxfce4
Salva il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.
Puoi configurare opzioni aggiuntive per VNC tramite il file
~/.vnc/config
. Crea e apri il file per la modifica.$ sudo nano ~/.vnc/config
Incolla il seguente codice al suo interno.
geometry=1024x768 dpi=96 depth=24
Salva il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.
Prova il server VNC.
$ vncserver /usr/bin/xauth: file /home/vncuser/.Xauthority does not exist New 'vncdesktop:1 (vncuser)' desktop at :1 on machine vncdesktop Starting applications specified in /home/vncuser/.vnc/xstartup Log file is /home/vncuser/.vnc/vncdesktop:1.log Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/vncuser/.vnc/passwd :1 to connect to the VNC server.
Puoi ottenere un elenco di tutte le sessioni VNC correnti utilizzando il seguente comando.
$ vncserver -list TigerVNC server sessions: X DISPLAY # RFB PORT # PROCESS ID :1 5901 1029
Successivamente, dobbiamo terminare il processo perché, nel passaggio successivo, creeremo un file di servizio per esso.
$ vncserver -kill :1 Killing Xtigervnc process ID 1029... success!
Uscire dalla shell utente.
$ exit
Passaggio 4: creare il file VNC Systemd Unit
CentOS/Rocky Linux/AlmaLinux
Il file dell'unità di servizio systemd di TigerVNC è disponibile nella directory
/lib/systemd/system
. Copia il file nella directory/etc/systemd/system
.$ sudo cp /lib/systemd/system/:1.service
Il server VNC viene eseguito sulla porta 5900 per impostazione predefinita. Ogni utente dovrebbe eseguire la propria istanza del server VNC su una porta separata. Il numero
:1
alla fine del comando indica a VNC di eseguire il servizio su una sottoporta di 5900. Quindi:1
si traduce in porta 5900,:2
si traduce nella porta 5902 e così via.Non solo VNC dovrebbe conoscere il numero di porta su cui eseguire il servizio, ma è anche necessario specificare quale utente eseguirà il server con quale numero di porta. Puoi configurarlo modificando il file
/etc/tigervnc/vncserver.users
. Aprilo per la modifica.$ sudo nano /etc/tigervnc/vncserver.users
Immettere il valore
:1=vncuser
subito prima di# :2=andrew
in modo che assomigli al seguente.# TigerVNC User assignment # # This file assigns users to specific VNC display numbers. # The syntax is <display>=<username>. E.g.: # :1=vncuser # :2=andrew # :3=lisa
Salva il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.
Ubuntu/Debian
Il programma di installazione non installa un file di servizio systemd su sistema Ubuntu o Debian. Devi crearlo manualmente. Crea e apri il file dell'unità systemd per TigerVNC.
$ sudo nano /etc/systemd/system/
Incolla il seguente codice al suo interno.
[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=simple User=vncuser PAMName=login PIDFile=/home/%u/.vnc/%H%i.pid ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :' ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Salva il file premendo Ctrl + X e immettendo Y quando viene richiesto di salvare.
Il passaggio successivo è comune a tutte le distribuzioni Linux.
Ricarica il demone systemd per attivare il servizio.
$ sudo systemctl daemon-reload
Passaggio 5: avviare il server VNC
CentOS/Rocky Linux/AlmaLinux
Avvia il servizio server VNC.
$ sudo systemctl start :1
Se desideri consentire al servizio di continuare a funzionare anche dopo i riavvii del sistema, puoi abilitarlo.
$ sudo systemctl enable :1
Controlla lo stato del servizio.
$ sudo systemctl status :1 ? :1.service - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/:1.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2022-03-16 01:16:18 UTC; 6s ago Process: 6777 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS) Main PID: 6784 (vncsession) Tasks: 0 (limit: 11179) Memory: 1.1M CGroup: /system.slice/system-vncserver.slice/:1.service ? 6784 /usr/sbin/vncsession vncuser :1 Mar 16 01:16:18 guacamole systemd[1]: Starting Remote desktop service (VNC)... Mar 16 01:16:18 guacamole systemd[1]: Started Remote desktop service (VNC).
Ubuntu/Debian
Avvia il servizio server VNC.
$ sudo systemctl start
Abilita il servizio VNC.
$ sudo systemctl enable
Controlla lo stato del servizio.
$ sudo systemctl status ? - Remote desktop service (VNC) Loaded: loaded (/etc/systemd/system/; enabled; vendor preset: enabled) Active: active (running) since Sat 2022-03-19 09:42:28 UTC; 6s ago Process: 1420 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS) Main PID: 1455 (vncserver) Tasks: 0 (limit: 4686) Memory: 884.0K CGroup: /system.slice/system-vncserver.slice/ ? 1455 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg Mar 19 09:42:28 vncdesktop systemd[1]: Starting Remote desktop service (VNC)... Mar 19 09:42:28 vncdesktop systemd[1420]: pam_unix(login:session): session opened for user vncuser by (uid=0) Mar 19 09:42:28 vncdesktop systemd[1]: Started Remote desktop service (VNC). Mar 19 09:42:29 vncdesktop systemd[1455]: pam_unix(login:session): session opened for user vncuser by (uid=0)
Passaggio 6: configurare il firewall
Per rendere il VNC accessibile sulla rete, dobbiamo aprire le sue porte.
CentOS/Rocky Linux/AlmaLinux
Eseguire il seguente comando per aprire le porte VNC e ricaricare il firewall.
$ sudo firewall-cmd --permanent --add-service=vnc-server $ sudo firewall-cmd --reload
Ubuntu/Debian
$ sudo ufw allow 5901:5910/tcp $ sudo ufw reload
Passaggio 7: creare una connessione VNC al server CentOS/Rocky Linux/AlmaLinux
Apri il tuo URL Guacamole e inserisci le tue credenziali per accedere.
Visita la scheda Connessioni in Impostazioni Guacamole. Fare clic sul pulsante Nuova connessione.
Scegli un nome per la tua connessione e seleziona VNC dal menu a tendina.
Nella sezione Parametri, inserisci l'indirizzo IP del tuo server (167.172.46.187 nel nostro caso) come nome host e 5901 come porta. Nella sezione Autenticazione, inserisci il nome utente e la password del tuo sistema VNC.
Se desideri abilitare eventuali impostazioni aggiuntive, fallo. Fare clic su Salva per completare l'aggiunta della connessione.
Accedi alla tua macchina usando VNC
Visita la dashboard di Guacamole e fai clic sulla tua connessione VNC nella sezione Tutte le connessioni.
Sarai accolto con la schermata di blocco del tuo server.
Ignoralo e inserisci le tue credenziali utente VNC.
Premere il pulsante Sblocca per procedere alla schermata iniziale del server/desktop.
Puoi iniziare a lavorare sulla tua macchina.
Passaggio 8: creare una connessione VNC a un server Ubuntu/Debian remoto
Se l'installazione di Guacamole e l'ambiente desktop si trovano sullo stesso server, puoi accedere al VNC del tuo server seguendo i passaggi precedenti. La nostra installazione Rocky Linux era sullo stesso server, ma il nostro ambiente Ubuntu era su un server diverso. In tal caso, utilizzeremo il tunneling SSH per creare una connessione VNC al server poiché è un metodo più sicuro.
Apri il tuo URL Guacamole e inserisci le tue credenziali per accedere.
Visita la scheda Connessioni in Impostazioni Guacamole. Fare clic sul pulsante Nuova connessione.
Scegli un nome per la tua connessione e seleziona VNC dal menu a tendina.
Nella sezione Parametri, inserisci l'indirizzo
localhost
come nome host e 5001 come porta. Lascia vuota la sezione Autenticazione poiché la useremo nel passaggio successivo. Parleremo anche del motivo per cui abbiamo usatolocalhost
come host tra un momento.Se desideri abilitare eventuali impostazioni aggiuntive, fallo. Fare clic su Salva per completare l'aggiunta della connessione.
Crea un tunnel SSH
Eseguire il seguente comando dal terminale del server che ospita Guacamole.
$ ssh -L 5001:localhost:5901
Esaminiamo ciò che sta accadendo qui. Il comando precedente inoltra la connessione SSH del tuo sistema al server remoto utilizzando il port forwarding locale.
- Il flag
-L
specifica il port forwarding locale. - La porta
5001
è la porta sulla tua macchina Guacamole da cui possiamo accedere al server remoto. Puoi scegliere una porta diversa se lo desideri. localhost:5901
è il server VNC remoto e il numero del display (e il numero di porta corrispondente) a cui connettersi. Poiché stiamo eseguendo il port forwarding locale, l'indirizzo del server remoto viene tradotto inlocalhost
per noi.[email protetta]
nel nostro caso sono l'utente SSH e l'indirizzo IP del server remoto Ubuntu/Debian a cui stiamo accedendo.
Il tunnel SSH rimarrà aperto finché il comando è in esecuzione. Digita
exit
sul terminale per uscire dal tunnel e chiudere la connessione VNC.Accedi alla tua macchina usando VNC
Visita la dashboard di Guacamole e fai clic sulla tua connessione VNC nella sezione Tutte le connessioni.
Sarai accolto con una richiesta di password che richiede la password VNC che hai impostato usando il comando
vncpasswd
. Immettere la password e premere Continua per procedere.Dopo la conferma, verrai indirizzato alla schermata del desktop del tuo sistema.
Puoi iniziare a lavorare sulla tua macchina.
Conclusione
Questo conclude il nostro tutorial sull'utilizzo di Apache Guacamole per creare una connessione VNC con un server Linux. Se hai domande, pubblicale nei commenti qui sotto.