Il modo tradizionale per amministrare il server è su ssh e riga di comando. Ma a volte è necessario eseguire qualche applicazione con una GUI su un server e, poiché in genere non ci si siede accanto al server e anche se lo fai, il server potrebbe non avere monitor e tastiera, hai bisogno di una sorta di desktop remoto.
VNC è una buona soluzione per questo che è ampiamente utilizzata ed è abbastanza facile da configurare. Ubuntu ha TightVNC nei repository e in questo tutorial imposteremo un server TightVNC multiutente su Ubuntu Server 16.04.
Per la GUI useremo XFCE che è un'alternativa più leggera a GNOME e Unity.
Installa VNC Server (Tight VNC) e Desktop (XFCE)
Per prima cosa iniziamo installando il server TightVNC e l'ambiente desktop XFCE.
sudo apt install gnome-core xfce4 firefox xfce4-goodies tightvncserver
Quindi dobbiamo configurare il server VNC con la password per l'accesso come utente 'miki'
vncserver
Ti verrà anche richiesta la password di sola visualizzazione, quella necessaria se vuoi che qualcuno si connetta alla tua sessione VNC senza il controllo del cursore e della tastiera, solo come spettatore. Questa password deve essere diversa dalla tua password principale. Se non prevedi di avere spettatori puoi scegliere di non inserire la password di sola visualizzazione. Al termine di questo processo, l'istanza VNC verrà avviata sulla porta 5901 e VNCserver conterà questa porta come :1. Se avvii più istanze di VNC, avrai più porte di visualizzazione e aumenterà entrambi i numeri di 1, a :2 e 5902 e così via per ogni istanza. Per continuare la configurazione, abbiamo effettivamente bisogno di uccidere tutte le istanze del server VNC. Lo facciamo seguendo il comando:
vncserver -kill :1
Al termine, è possibile modificare il file di configurazione per il server VNC per selezionare quale ambiente desktop verrà avviato al momento della connessione al server VNC. Il file di cui sto parlando si chiama xstartup e si trova all'interno della directory .vnc nascosta in ~/ dir. Per prima cosa eseguiamo il backup di questo file
mv ~/.vnc/xstartup ~/.vnc/xstartup.backup
E quindi crea un nuovo file da una lavagna pulita
nano ~/.vnc/xstartup
In questo file vuoto, incolla queste poche righe:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
Aggiungi bit eseguibile a questo file
sudo chmod +x ~/.vnc/xstartup
Successivamente possiamo riavviare il server VNC
vncserver
Connessione al server VNC
Quindi dobbiamo connetterci al server VNC per vedere se la nostra configurazione funziona. Possiamo usare qualsiasi client VNC, come ad esempio Vinagre o Remote Desktop Viewer, come viene anche chiamato. Per prima cosa installalo e avvialo
sudo apt install vinagre
Inserisci il nome del tuo server, porta 5901 e fai clic su Connetti. Ti dovrebbe essere richiesta la password e poi dovresti entrare in XFCE
Puoi connetterti a questa sessione da un numero illimitato di computer, ma poi controlleresti tutti un cursore del mouse e avresti la stessa sessione. Se alcuni utenti digitano la password di sola visualizzazione (a condizione che tu ne abbia creata una) non avrebbero il controllo del cursore ma sarebbero comunque in una singola sessione e guarderebbero una stessa schermata.
Utenti multipli
È possibile avere più sessioni VNC che non interferiscono tra loro. Questo viene fatto creando un numero arbitrario di utenti e ogni utente avrà la propria porta di visualizzazione e la propria istanza del server VNC. E a sua volta eseguirà la propria istanza di ambiente desktop, o che potrebbe essere un DE completamente separato. Iniziamo prima aggiungendo un nuovo utente
sudo adduser newuser
Quindi accediamo come quell'utente
su newuser
E creiamo una password per il nuovo utente
vncserver
Oltre alla password, questo ha anche creato un nuovo processo in ascolto sulla porta 5902. Dobbiamo terminare questo processo per poter modificare il file di configurazione.
vncserver -kill :2
E dobbiamo effettivamente ripetere il processo di prima. Per prima cosa esegui il backup del file xstartup
mv ~/.vnc/xstartup ~/.vnc/xstartup.backup
Quindi creane uno nuovo da zero
nano ~/.vnc/xstartup
Oltre tre righe qui sotto
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
E rendilo eseguibile:
sudo chmod +x ~/.vnc/xstartup
Ora esegui vncserver per spawnare il processo
vncserver :2
E ora puoi connetterti alla porta 5902 e avere una sessione separata.
Come configurare il tunneling SSH
Finora siamo riusciti a effettuare la connessione direttamente sulle porte display, nel nostro caso 5901 e 5902. Ma cosa succede se quelle porte vengono chiuse, dal firewall, e per qualche motivo non è pratico aprirle. C'è una soluzione in tal caso, possiamo usare il tunneling SSH. La porta 22 o qualsiasi altra porta utilizzata per l'accesso SSH su un server può essere utilizzata per ingannare il visualizzatore VNC che il server VNC è in esecuzione su localhost sulla porta 5901 o 5902. Con questo comando si stabilisce un tunnel SSH:
ssh -L 5902:127.0.0.1:5902 [email protected]
Assicurati di cambiare la parte evidenziata nel tuo indirizzo IP e nome utente.
Successivamente puoi avviare Vinagre o Remmina e inserire localhot:5902 come indirizzo. Penserà che il desktop remoto sia su localhost e indirizzerà il traffico sulla porta ssh al tuo server, purché la connessione SSH sia attiva.
Creazione delle unità di sistema
Tutto ciò va bene quando imposti manualmente l'utente e il server su SSH, ma devi farlo di nuovo ad ogni riavvio del server. Quindi, per evitarlo, creiamo un file di unità di sistema. Questo è il nuovo nome di fantasia dello script di avvio della vecchia scuola. In realtà dovremo crearne due per due utenti prima di crearne uno
sudo nano /etc/systemd/system/[email protected]
Ecco qua questa configurazione
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=miki
PAMName=login
PIDFile=/home/miki/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Poi ne fai un altro:
sudo nano /etc/systemd/system/[email protected]
E incolla le stesse cose, solo in entrambi i casi cambia il nome utente per i tuoi utenti. Ora dobbiamo eliminare i vecchi processi se sono ancora in esecuzione e ricaricare i file unit
vncserver -kill :2
vncserver -kill :1
sudo systemctl daemon-reload
E inizia a usare i file di unità
sudo systemctl start vncserver@1
sudo systemctl start vncserver@2
E se vuoi un server vnc ad ogni avvio, fai ancora una volta come sopra, abilita invece di avviare.
Conclusione
In questo tutorial abbiamo imparato come installare e configurare il server VNC con due utenti su Ubuntu 16.04. Se hai domande o feedback, sentiti libero di lasciare un commento.