start je een vnc server voor de eigenlijke weergave (scrapen) met TigerVNC

VNC is een toepassing voor het delen van bureaubladen (Virtual Network Computing) om via een netwerkverbinding verbinding te maken met en controle uit te oefenen over het bureaublad van een (remote of locale) computer.

Op Linux systemen echter laten veel VNC server programma’s alleen toe verbinding te maken met een virtueel bureaublad en niet met het eigenlijke. Deze howto biedt een oplossing, om via de TigerVNC server verbinding te maken met de werkelijke actieve sessie op je Linux desktop.

Vereisten

  • Een volledig functionele Linux desktop omgeving
  • root privilege (om de TigerVNC server te installeren)
  • basiskennis van de linux shell

Om de nieuwste pakketten te krijgen, is het handig om te updaten.

[email protected]:~$ sudo apt-get update

Deze howto werd getest op Debian/GNU Linux 9.5 (stretch) en Ubuntu 18.04

Installeer TigerVNC

Eerst moet je de TigerVNC server installeren.

[email protected]:~$ sudo apt-get install tigervnc-scraping-server

Merk op dat er op de meeste debian-gebaseerde systemen een klein pakket genaamd tigervnc-scraping-server is, dat je moet installeren. Je hoeft de hoofd TigerVNC server (pakketnaam: tigervnc-standalone-server) niet te installeren om de functionaliteit te hebben om verbinding te maken met de draaiende bureaubladsessie, alleen als je liever ook verbinding maakt met een virtuele desktop.

De TigerVNC server levert een kleinere toepassing (x0vncserver) om toegang te verlenen tot de actieve sessie.

Maak dan een .vnc directory aan in je home:

[email protected]:~$ mkdir -p ~/.vnc

Maak een wachtwoord voor je vnc sessie:

[email protected]:~$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

De vnc server starten

Een korte beschrijving van de x0vncserver:

x0tigervncserver is a TigerVNC Server which makes any X display remotely accessible via VNC, TigerVNC or compatible viewers. Unlike Xvnc(1), it does not create a virtual display. Instead, it just shares an existing X server (typically, that one connected to the physical screen).

Nu je met succes de TigerVNC server op je computer geïnstalleerd hebt, een wachtwoord gemaakt hebt met het vncpasswd commando, kunnen we beginnen met het starten van onze vnc server. Zorg ervoor dat je op de actieve sessie bent, en schrijf (als gebruiker):

[email protected]:~$ x0vncserver -passwordfile ~/.vnc/passwd -display :0

Wed Oct 10 22:17:16 2018
Geometry: Desktop geometry is set to 1920x1080+0+0
Main: XTest extension present - version 2.2
Main: Listening on port 5900

De optie -passwordfile ~/.vnc/passwd leest het wachtwoordbestand dat eerder met het vncpasswd commando is aangemaakt. De tweede optie -display :0 betekent, dat je verbinding wilt maken met de sessie op het scherm :0, dat meestal de actieve sessie is.

Nu kun je je eigenlijke bureaublad benaderen met elke vnc viewer toepassing op de standaard vnc poort 5900.

Je kunt dit proces stoppen wanneer je maar wilt door op Ctrl-c te drukken.

Als je het op de achtergrond wilt laten lopen, typ dan:

[email protected]:~$ x0vncserver -passwordfile ~/.vnc/passwd -display :0 >/dev/null 2>&1 &

Nu worden alle uitvoer standaard output en fouten omgeleid naar /dev/null en met de & aan het eind zal het op de achtergrond lopen. Je kunt de vnc server echter niet meer stoppen door op Ctrl-c te drukken, in plaats daarvan moet je zijn proces id doden (zie de onderstaande paragraaf “Stoppen van de vnc server”).

Voor meer opties en syntaxis, zie het x0vncserver handboek.

Stoppen van de vnc server

Als je vnc server in de achtergrond draait, moet je het proces-id kennen om het te kunnen stoppen.

[email protected]:~$ ps -fu user | grep [x]0vncserver
user    1328    1   0 23:11 pts/2    00:00:00    /usr/bin/x0vncserver -display :0 -passwordfile /home/user/.vnc/passwd -rfbport 5900

De uitvoer zal er zo uitzien, let dus op de pid 1328. Om de vnc server te stoppen, moeten we dit proces “doden”.

[email protected]:~$ kill -9 1328

De optie -9 voor het kill commando zendt het KILL signaal naar het proces id om er zeker van te zijn dat het stopt.

Script om de vNC server te draaien

Er staat een script om de x0vncserver toepassing te starten en te stoppen op github. Om te testen download je ook het psmisc pakket:

[email protected]:~$ sudo apt-get install git psmisc

Download dan het startvnc script met het git commando:

[email protected]:~$ git clone https://github.com/sebestyenistvan/runvncserver
Cloning into 'runvncserver'...
remote: Enumerating objects: 77, done.
remote: Counting objects: 100% (77/77), done.
remote: Compressing objects: 100% (57/57), done.
remote: Total 77 (delta 25), reused 60 (delta 18), pack-reused 0
Unpacking objects: 100% (77/77), done.

Je uitvoer zal er ongeveer uitzien als hierboven.

Kopieer het startvnc script uit de runvncserver directory naar je home:

[email protected]:~$ cp ~/runvncserver/startvnc ~

Verander de permissies in uitvoerbaar, om het script uit te voeren:

[email protected]:~$ chmod +x ~/startvnc

Voer dan het script uit.

[email protected]:~$ ./startvnc

Usage: ./startvnc start|stop|restart|status

Dit script werkt alleen, als je een .vnc directory in je huis hebt en een vncpasswd hebt aangemaakt (het controleert op ~/.vnc/passwd bestand). We hebben de .vnc directory en het wachtwoord al eerder aangemaakt.

Om de vnc server op het eigenlijke scherm te starten, typ je gewoon:

[email protected]:~$ ./startvnc start
Starting VNC Server on display :0 [ok]

Je kunt testen, of je vnc server draait met de optie:

[email protected]:~$ ./startvnc status
Status of the VNC server: [running] (pid: 1328)

Weinig voorbeelden:

TigerVNC gebruiken

Of door de 5900 TCP poort op je systeem te controleren met het fuser commando (uit het psmisc pakket):

[email protected]:~$ fuser -vn tcp 5900
                  USER      PID     ACCESS      COMMAND
5900/tcp:         user      1328    F....       x0vncserver

Je krijgt dan een uitvoer als deze als de vnc server op poort 5900 draait.

Controleer de poort met het fuser commando

Meer instructies voor dit script vind je in het readme bestand:

[email protected]:~$ less runvncserver/README.md

Het script maakt een logbestand aan, waarin de uitvoer wordt opgeslagen. Als er iets mis gaat of je kunt de x0vncserver niet starten of stoppen, kijk dan naar het logbestand onder ~/.vnc/logfile

Start de VNC server automatisch

Als je automatisch toegang wilt tot de actieve bureaubladsessie, moet je het .xsessionrc bestand in je thuismap bewerken.

[email protected]:~$ echo "/home/user/startvnc start >/dev/null 2>&1" >> ~/.xsessionrc

Vervang user door je gebruikersnaam en het zal automatisch lopen bij het starten van de X sessie. Het script logt zijn activiteit in ~/.vnc/logfile, als er iets mis gaat, kun je het logbestand daar bekijken.

Automatisch starten van de VNC server

Opmerkingen

Deze handleiding gaat niet over het opzetten van een VNC virtuele desktop.

Veiligheid

Wees je ervan bewust, dat de x0vncserver standaard geen versleuteling gebruikt, dus gebruik hem voorzichtig over het internet. Als je hem op afstand wilt gebruiken, kun je hem tunnelen via ssh. Er zijn echter andere howtos waar je een oplossing kunt vinden om je VNC sessie te versleutelen.

Of je kunt eens kijken naar het ssvnc pakket.

VNC kijkers

Als je op zoek bent naar VNC viewers, zijn er genoeg, bijvoorbeeld:

  • gvncviewer
  • tigervnc-viewer
  • xtightvncviewer
  • xvnc4viewer

Geometrie

De x0vncserver op het eigenlijke beeldscherm zal dezelfde geometrie gebruiken als het lopende bureaublad op het :0 beeldscherm. Dus als je de -geometrie optie op een lagere grootte zet, wordt hij niet geschaald, je ziet alleen een fractie van de grootte van het bureaublad.

Feedback

Voel je vrij om feedback te schrijven. Als je deze handleiding of zelfs het script op een ander systeem getest hebt.

Bureaublad gedeeld via VNC