Ricerca nel sito web

Come utilizzare Apache Guacamole per creare una connessione VNC


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1 - Installa la GUI desktop sul tuo server
  3. Passaggio 2 - Installa TigerVNC Server
  4. Passaggio 3 - Crea le credenziali utente VNC
  5. Passaggio 4 - Crea il file VNC Systemd Unit
  6. Passaggio 5 - Avvia il server VNC
  7. Passaggio 6: configurazione del firewall
  8. Passaggio 7 - Crea una connessione VNC al server CentOS/Rocky Linux/AlmaLinux
    1. Accedi alla tua macchina usando VNC

    1. Crea un tunnel SSH
    2. 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 inserisci n 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 usato localhost 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 in localhost 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.