11.5. VNC til fjernstyring af dine maskiner

VNC står for Virtual Network Computing. Kender du programmer som PC Anywhere eller NetOp, som begge kører på Windows-platformen, så har du en god idé om hvad VNC er: Et program til fjernstyring af en anden PC med grafisk brugerflade. Dog kører VNC over TCP/IP, og ikke andet. VNC består af en server-del, som kører på den maskine du ønsker at fjernstyre, samt en klient-del, som kører på den maskine du sidder foran.

11.5.1. Integration af serveren på arbejdspladsen med VNC

Hvis du har et lille system med en Linux-server og en eller flere arbejdspladser med Windows, kan du med VNC få en let og effektiv adgang til at arbejde med serveren direkte på din arbejdsplads. Installér først vncserver på din Linux-server. Log ind på serveren med dit almindelige brugernavn (ikke root), og start vnc-serveren, f.eks. med :1 som nummer. Log ind under et andet brugernavn og start vncserver igen, her med :2 som nummer.

Hvert nummer har sin egen opsætning, så du kan evt. starte en vncserver til hvert familiemedlem, efter at du har logget ind på serveren som vedkommende. Start derefter vncviewer på din arbejdsplads i et vindue, og log ind med det password du oplyste første gang vncserver blev startet (på Linux-serveren under det :nummer du bruger). Det letteste er nok at bruge dens IP-nummer, altså f.eks. 192.168.1.1:1, hvor det sidste :1 skal svare til det nummer du gav på serveren.

Nu har du et miljø, hvor du uden videre kan veksle mellem vinduet med serverens X-variant og Windows-brugerfladen. Du kan direkte klippe-klistre tekst mellem Linux- og Windows-programmer, og i det hele taget gøre på serveren hvad din adgang tillader dig. Hvis du ikke har behov for at skifte bånd, cd'er, disketter eller lignende på din server, kan du nu parkere din server så langt væk som muligt, (f.eks. i kælderen, så den kan bidrage til opvarmningen af huset).

Du får nu disse fordele:

11.5.2. Installation af VNC

For eksemplets skyld antages, at du ønsker at fjernstyre din Linux-maskine fra en Windows-maskine. Du skal altså hente en Linux-server og en Windows-klient. Man kan også fjernbetjene en Windows-maskine - selv mens andre sidder ved maskinen. Yderst smart til support.

Først skal VNC-serveren hentes. Det kan gøres fra http://www.realvnc.com/ (Version VNC 3.3.7 eller 4.0beta) som er det sted hvor udviklerne lægger kildeteksten. Desværre kan man derfra ikke hente RPM-pakker, men gå til http://www.rpmfind.net og søg efter vnc-server. Version 3.3.3r2 eller nyere kan findes der.

VNC-serveren skal installeres som root:

[root@linus root]# rpm -Uvh vnc-server-3.3.3r2-4.i386.rpm

11.5.3. Start en server

vncservers man-side oplyser følgende:

vncserver [:number] [-geometry widthxheight] [-depth depth] 
 [-pixelformat rgbNNNbgrNNN] [-name desktop-name] [Xvnc-options]

Der er altså mange options, men du behøver kun ganske få for at komme i gang.

Et eksempel på start af VNC-server:

[tyge@hven ~]$ vncserver :1 -geometry 800x600 -depth 8

hvilket betyder: Lav en ny X-desktop med størrelsen 800x600 pixels og 8 bits pr. pixel (=256 farver) og lyt på TCP/IP 5801. 5801? Ja, for VNC lægger automatisk 5800 til det nummer man angiver, og bruger det som port-nummer.

Du kan bruge en hvilket som helst størrelse du ønsker, også skæve størrelser som f.eks. 200x500, hvis du ønsker det. Vær opmærksom på, at jo større desktop du bruger, desto mere skal der sendes på nettet, og det giver reduceret hastighed. En mulig opløsning kunne være 800x600x8bpp til VNC-serveren, selv om den fysiske desktop kører 1024x800x16bpp. Ved at vælge denne mindre opløsning giver det 3,5 gange mindre trafik.

Desuden er et baggrundsbillede også vejen til langsom hastighed, så brug en ensfarvet baggrund i stedet for dine feriebilleder.

Første gang du starter vncserver, skal du angive et password. Dette password skal du opgive, når du senere forsøger at forbinde dig til maskinen. Hvis du ønsker at ændre passwordet kan du blot køre programmet vncpasswd.

Når du vil lukke din VNC-server igen foregår det sådan:

[tyge@hven ~]$ vncserver -kill :1

11.5.4. Opsætning

Bruger du f.eks. Gnome som dekstop, er det en fordel at bruge en anden Window Manager når kobler op til VNC. Et valg kunne være IceWM der føles en lille smule hurtigere, og hver lille smule hastighed tæller.

Af dokumentationen fremgår det at vncserver bruger $HOME/.vnc/xstartup som startfil. Det er altså stedet, hvor sådanne ændringer skal laves. Et eksempel på en ændret xstartup kan se således ud:

#!/bin/sh
xrdb $HOME/.Xdefaults &
exec icewm

Hvis du i stedet ønskede at bruge Gnome, så skulle linjen med exec icewm ændres til exec gnome-session og tilsvarende anvender KDE exec startkde. Dette kræver selvfølgelig, at IceWM, Gnome og/eller KDE er installeret i forvejen. Det kan også være at du bliver nødt til at angive hele stien til de kommandoer der startes.

Bemærk i øvrigt at standard window manager for VNC er twm, som vel kun de færreste ønsker at bruge.

11.5.5. Klienten

Der findes klienter til både Windows og Linux. Da disse er oversat specifikt til det relevante system er de mindre processorkrævende. Men den smarteste klient er dog den til Java.

Har du en browser, der kan snakke Java, så gå ind på: http://x.x.x.x:5801. Her angiver du brugernavn og adgangskode hvorefter du i din browser kan fjernstyre maskinen.

Figur 11-8. VNC - hvor en Linux-maskine styres fra en Internet Explorer fra Windows

Figur 11-9. VNC - hvor en Windows-maskine styres fra en Linux-maskine via Netscape

11.5.6. Pas på din sikkerhed

Bemærk at vncserver giver brugeren af klienten de samme rettigheder, som den konto der startede den. Er du logget ind som "guest" når du starter vncserver, får alle der logger på via en vnc-klient "guest"-rettigheder. Af hensyn til sikkerheden bør du derfor ikke starte den som root, og det er også klogt at huske nedlukning af vncserver, når den ikke skal bruges.

Bemærk også, at hvis du har startet vncserver direkte i en konsol på serveren, så bliver den ved at køre, også selv om du har forsøgt logout.

VNC er en åbning af et potentielt sikkerhedshul - i hvertfald er versioner op til og med 3.3.3 slet ikke sikre, jfr. Weekly Linux Security Digest 2001/01/22-2001/01/28. I de ældre versioner kan man bryde ind i trafikken mellem server og klient. Generelt skal man ikke lukke op for services man ikke selv kan overskue konsekvenserne af, hvis man er koblet til et usikkert netværk.