Virtual Network Computing (VNC) is een systeem voor het delen van schermen dat wordt gebruikt om op afstand toegang te krijgen tot grafische gebruikersinterfaces. Het maakt gebruik van het remote frame buffer-protocol waarmee de ene server (gebruikerskant) verbinding kan maken met de andere kant (client). VNC is veilig, betrouwbaar en werkt op alle besturingssystemen.
RealVNC, UltraVNC, Xfce, TightVNC, om er een paar te noemen, zijn de meest populaire VNC-clients die tegenwoordig worden gebruikt. Uit de lijst met beschikbare alternatieven bent u vrij om elke VNC te kiezen die u wilt. In deze handleiding leiden we u door de stappen voor het installeren en configureren van VNC op Ubuntu 20.04. We gaan Xfce installeren vanwege de snelheid, het lichte gewicht en de uitstekende prestaties.
We beginnen met het opzetten van een VNC-server op een Ubuntu server en het tot stand brengen van een beveiligde verbinding via de SSH-tunnel. Ten slotte gebruiken we een VNC-clientprogramma op onze lokale machine om met de server te communiceren via een grafische desktopomgeving.
Vereisten
Om deze handleiding te volgen, heeft u het volgende nodig:
-
Een Ubuntu 20.04-server met een non-root gebruiker en een uncomplicated firewall (UFW).
-
Een lokale computer waarop een VNC-client is geïnstalleerd. De VNC-client die we gaan gebruiken, maakt verbinding via de SSH-tunnels.
Stap 1— Installeer de desktopomgeving en de VNC-server
In tegenstelling tot eerdere Ubuntu-versies wordt Ubuntu 20.04 niet geleverd met een vooraf geïnstalleerde VNC. Als eerste stap installeren we de benodigde pakketten uit de officiële Ubuntu-repository. Voordat we verder gaan, updaten we de bestaande pakketten:
|
1 |
sudo apt update |
Nu installeren we Xfce en het xfce4-goodies-pakket met het commando:
|
1 |
sudo apt install xfce4 xfce4-goodies |
Tijdens de installatie van het pakket ziet u een scherm waarin u wordt gevraagd een standaard display manager voor Xfce te kiezen. Negeer het bericht of stel het in als standaard, en druk vervolgens op ENTER.
Een display manager is een programma waarmee gebruikers via een grafische interface kunnen inloggen op een desktopomgeving. In deze handleiding gebruiken we Xfce bij het verbinden met een VNC-client waarbij we zijn ingelogd als een non-root Ubuntu-gebruiker. Daarom heeft de keuze van de display manager geen invloed op onze installatie.
Na de installatie van Xfce installeren we de TightVNC-server:
|
1 |
sudo apt install tightvncserver |
Gebruik in de volgende stap het vncserver-commando om een VNC-toegangswachtwoord in te stellen en de initiële configuratiebestanden aan te maken. Typ het volgende om de VNC-serverinstantie te starten:
|
1 |
vncserver |
Stel daarna een wachtwoord in van 6 tot 8 tekens lang en druk op ENTER. U ziet een promptbericht:
|
1 2 3 4 5 |
Output U heeft een wachtwoord nodig om toegang te krijgen tot uw desktops. Wachtwoord: Verifieer: |
Als u in de toekomst uw wachtwoord wilt wijzigen of een alleen-lezen wachtwoord wilt toevoegen, gebruik dan het commando:
|
1 |
vncpasswd |
Nu zijn alle standaardconfiguraties voor de server gemaakt en is er een displaypoort 5901 gestart als :1. VNC kan meerdere instanties starten op andere displaypoorten zoals :2, :3, en :4 die verwijst naar poort 5902, 5903, en 5904 respectievelijk:
|
1 2 3 4 5 6 7 8 9 |
Output Wilt u een alleen- lezen wachtwoord invoeren-only password (y/n)? n xauth: bestand /home/cloudsigma/.Xauthority bestaat niet exist Nieuw 'X' desktop is your_hostname:1 Aanmaken standaard opstartscript /home/cloudsigma/.vnc/xstartup Starten van applicaties gespecificeerd in /home/cloudsigma/.vnc/xstartup Log bestand is /home/cloudsigma/.vnc/your_hostname:1.log |
Je VNC-server is nu geïnstalleerd en draait succesvol. In de volgende stap gaan we de server configureren om Xfce te starten om toegang te krijgen via de grafische interface.
Stap 2— Configureer de VNC-server
Onder de home-directory vind je de .vnc map die alle configuratiebestanden bevat genaamd startup. In eerste instantie zul je zien dat het opstartbestand draait dat automatisch is aangemaakt toen we het commando vncserver in Step-1 hebben uitgevoerd. Het opstartscript is gemaakt toen je het commando vncserver in de vorige stap hebt uitgevoerd. Nu ga je echter je eigen script maken om de Xfce-desktop te starten. We moeten ook onze eigen server maken om de Xfce-desktop te starten omdat de VNC-configuratie zal veranderen.
Voordat we verder gaan, moeten we de VNC-serverinstantie stoppen die draait op poort 5901:
|
1 |
vncserver -kill :1 |
Je ziet de volgende uitvoer:
|
1 2 |
Uitvoer Beëindigen van Xtightvnc proces ID 17648 nano ~/.vnc/xstartup |
In plaats van 17648, krijg je mogelijk een ander nummer en dat is prima. Vervolgens gaan we het bestand xstartup aanpassen. Voordat we wijzigingen in het bestand aanbrengen, maken we een back-up van het originele bestand:
|
1 |
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak |
Maak vervolgens een nieuw xstartup bestand aan en open het in een teksteditor. In deze handleiding gebruiken we nano:
|
1 |
nano ~/.vnc/xstartup |
Voeg daarna de volgende regels toe aan het bestand:
|
1 2 3 |
#!/bin/bash xrdb $HOME/.Xresources startxfce4 & |
Telkens wanneer je de VNC-server start of herstart, worden deze commando's automatisch uitgevoerd. De eerste regel is de Shebang die het systeem informeert over de interpreter waaraan het bestand ~/.vnc/xstartup moet worden doorgegeven voor uitvoering. De volgende regel xrdb $HOME/. Xresources, informeert het GUI-framework van VNC om het bestand Xresources van de servergebruiker te lezen. Ten slotte vraagt de laatste regel de server om Xfce te starten. Sla na het toevoegen van deze regels het bestand op en sluit het.
We moeten het bestand uitvoerbaar maken zodat de VNC-server het nieuwe opstartbestand kan gebruiken:
|
1 |
chmod +x ~/.vnc/xstartup |
Start vervolgens de VNC-server opnieuw op:
|
1 |
vncserver -localhost |
Nu is de optie -localhost hier toegevoegd. De localhost bindt de VNC-server aan de loopback-interface van je server, waardoor alleen verbindingen van geïnstalleerde servers worden toegestaan. Vervolgens zetten we een SSH-tunnel op tussen onze lokale machine en de server. Het doel is om een extra beveiligingslaag rond VNC toe te voegen. Waarom? Omdat de gebruikers die toegang krijgen, degenen zijn die al SSH-toegang tot de server hebben.
Je ziet de volgende uitvoer:
|
1 2 3 4 |
Nieuw 'X' desktop is your_hostname:1 Starten van applicaties gespecificeerd in /home/sammy/.vnc/xstartup Log bestand is /home/cloudsigma/.vnc/your_hostname:1.log |
Nadat de configuratie is ingesteld, zijn we klaar om vanaf onze lokale machine verbinding te maken met de VNC-server.
Stap 3— Veilig verbinding maken met de VNC-desktop
Bij het verbinden met de server gebruikt VNC geen beveiligde protocollen. Daarom moeten we een SSH-tunnel opzetten en de VNC-client vragen om verbinding te maken via de tunnel in plaats van rechtstreeks verbinding te maken.
We maken een SSH-verbinding op onze lokale computer met behulp van het commando ssh dat doorstuurt naar de localhost verbinding. Gebruik het commando in de terminal om een SSH-verbinding te maken:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
Laten we de bovenstaande code ontcijferen:
-
-L 59000:localhost:5901: De optie -L specificeert dat de opgegeven poort op de lokale computer ( 59000) naar de opgegeven host en poort op de bestemmingsserver ( localhost:5901) gaat. Dat betekent dat poort 5901 op de bestemmingsserver zal worden gedefinieerd als your_server_ip). De lokale poort die u opgeeft is willekeurig. Zolang de poort nog niet aan een andere service is gekoppeld, bent u vrij om deze te gebruiken als de doorstuurpoort voor uw tunnel.
-
-C: Schakelt compressie in, wat verder helpt bij het minimaliseren van het resourceverbruik en het versnellen van de prestaties.
-
-N: Handig voor het doorsturen van poorten. Dit informeert ssh om geen externe commando's uit te voeren.
-
-l cloudsigma your_server_ip: De -l optie stelt u in staat om de gebruiker op te geven waarmee u wilt inloggen nadat u verbinding hebt gemaakt met de server.
Het bovenstaande commando is een veiligere manier om een beveiligde verbinding tot stand te brengen dan louter de firewall van uw server open te stellen om verbindingen met poort toe te staan 5901 vanaf elke locatie. Zodra u de verbinding tot stand brengt, stuurt de SHH-tunnel de inhoud door van poort 5901 op uw VNC naar poort 59000 op uw lokale machine via de standaard SSH-poort; poort 22.
U kunt ook PuTTY gebruiken om verbinding te maken met uw server. Open PuTTY, ga naar de linkerkant van de PuTTY-terminal en zoek de Connection tak om verbinding te maken. Vouw vervolgens de SSH tak uit en klik op Tunnels. Op het Options controlling SSH port forwarding scherm, voer 59000 in als de Source Port en localhost:5901 als de Destination:

Laat alle opties ongewijzigd, klik op Add, en daarna op Apply om de tunnel te implementeren. Zodra de tunnel start, gebruikt u een VNC-client om verbinding te maken met localhost: 59000. Standaard wordt u gevraagd om u te authenticeren met het wachtwoord dat we hebben aangemaakt in Stap-1. Zodra u verbinding hebt gemaakt, ziet u het standaard Xfce-bureaublad:

U kunt bestanden in de thuismap openen en beheren. Configureer ook uw VNC-server om te draaien als een systemd-service.
Stap 4 — VNC uitvoeren als een Systemd-service
Door de VNC-server in te stellen om als een systemd-service te draaien, is serverbeheer mogelijk. U kunt deze naar eigen wens en behoefte starten, stoppen, herstarten of beëindigen. Elke keer dat de server opstart, kunt u systemd-beheerscommando's gebruiken om te controleren of de server AAN of UIT.
Eerst maken we een nieuw unit-bestand om de VNC-displaypoort op te geven die we willen gebruiken bij het beheren van de services. Definieer een unit-bestand:
|
1 |
sudo nano /etc/systemd/system/vncserver@.service |
U vindt het @-symbool aan het einde van de bestandsnaam, waarmee u een argument kunt doorgeven voor het gebruik van de serviceconfiguratie.
Voeg vervolgens de reeks regels toe aan het unit-bestand. Wijzig de naam van de User, Group, WorkingDirectory, en de gebruikersnaam in de waarde van PIDFILE:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[Unit] Description=Start TightVNC server bij opstarten After=syslog.target network.target [Service] Type=forking User=cloudsigma Group=cloudsigma WorkingDirectory=/home/cloudsigma PIDFile=/home/cloudsigma/.vnc/%H:%i.pid ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target |
Als de VNC al draait, zal het ExecStartPre-commando deze stoppen. Het ExecStart-commando start VNC en stelt de kleurdiepte in op 24-bits kleur met een resolutie van 1280×800. U kunt deze opstartopties aanpassen aan uw behoeften. Let er ook op dat het ExecStart-commando opnieuw de -localhost-optie bevat. Sla het unit-bestand op en sluit het zodra u klaar bent.
Introduceer vervolgens het nieuwe unit-bestand bij uw systeem:
|
1 |
sudo sudo systemctl daemon-reload |
Zet AAN het unit-bestand:
|
1 |
sudo systemctl enable vncserver@1.service |
De 1 die volgt op de @-teken geeft aan op welk schermnummer de service moet verschijnen. In ons geval is dit de standaard :1 zoals besproken in Stap-2. Als de VNC nog steeds actief is, kunt u de huidige instantie van de VNC-server stoppen met het kill-commando:
|
1 |
vncserver -kill :1 |
Start het vervolgens zoals u elke andere systemd-service zou starten:
|
1 |
sudo systemctl start vncserver@1 |
U kunt controleren of het is gestart met dit commando:
|
1 |
sudo systemctl status vncserver@1 |
U ziet de uitvoer:
|
1 2 3 4 5 6 7 8 |
Uitvoer vncserver@1.service - Start TightVNC server bij opstarten Geladen: geladen (/etc/systemd/system/vncserver@.service; ingeschakeld; leverancier voorinstelling: ingeschakeld) Actief: actief (draaiend) sinds Do 2020-05-07 17:23:50 UTC; 6s geleden Proces: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Proces: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Hoofd PID: 39795 (Xtightvnc) ... |
Uw VNC-server is nu klaar voor gebruik telkens wanneer uw server opstart, en u kunt deze beheren met systemctl-commando's zoals elke andere systemd-service. U zult echter geen verschil merken aan de clientzijde. Om opnieuw verbinding te maken, start u uw SSH-tunnel met:
|
1 |
ssh -L 59000:localhost:5901 -C -N -l cloudsigma your_server_ip |
U kunt opnieuw verbinding maken met uw VNC-client naar localhost:59000 met uw server.
Conclusie
In het begin lijkt het opzetten van een VNC-server misschien een uitdaging, vooral wanneer u verbinding probeert te maken met een nieuwe computer. Zodra u een betrouwbare verbinding tot stand brengt, zal het werken met een computer op afstand leuk en opwindend zijn. Met een beveiligde VNC-server actief op uw Ubuntu 20.04-server, kunt u eenvoudig uw bronnen, bestanden, software en instellingen beheren met een gebruiksvriendelijke grafische interface. Het gebruik van overmatige bandbreedte is wellicht een nadeel van het gebruik van VNC. U kunt dit overbruggen door schermen met een lage resolutie en grijstinten te gebruiken voor een snellere overdracht.
Veel computerplezier!
Reacties
Nog geen reacties. Wees de eerste.