VNC: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
(→Links) |
||
Zeile 85: | Zeile 85: | ||
Wurde alles dies erledigt, muss X neu gestartet werden. Danach kann per VNC-Client der aktive Screen auf dem entfernten Rechner übernommen werden. | Wurde alles dies erledigt, muss X neu gestartet werden. Danach kann per VNC-Client der aktive Screen auf dem entfernten Rechner übernommen werden. | ||
== | ==Orginal== | ||
http://www.manpage.ch/faq/vnc.php | http://www.manpage.ch/faq/vnc.php |
Version vom 18. Dezember 2005, 22:17 Uhr
Virtual Network Computing (VNC)
@Autor: André Stiehm
VNC dient zur Bildschirmübertragung und Fernbedienung von Computern übers Netzwerk. Der Zugriff ist plattformunabhängig möglich, man kann also auf einem Linux einen Windows-Desktop anzeigen lassen und umgekehrt. Naürlich ist es auch möglich, unter Linux einen Unix- oder einen anderen Linux-Desktop anzuzeigen.
Es ist mir bei meiner Lektüre von Usenet-Postings und Foren immer wieder aufgefallen, dass einige Unklarheiten betreffend dem VNC-Server unter Linux bestehen. Kann man nun die aktuell laufende X-Session übernehmen oder nicht? Die Antwort ist, es gibt zwei, besser gesagt sogar drei, verschiedene VNC-Server-Arten unter Linux. Aber beginnen wir am Anfang, in diesem Fall mit der Installation von VNC unter Slackware Linux - unter anderen Distributionen erfolgt die Installation mittels RPM- oder .deb-Paketen, der Rest der Anleitung bleibt sich aber grösstenteils gleich!
$> apt-get install vnc
Wurde dies getan, kann zum "normalen" User gewechselt werden. Als erstes muss jetzt ein Passwort für den Server vergeben werden. Dies wird per Aufruf von vncpasswd gemacht. Das Password wird von diesem Tool verschlüsselt in das File ~/.vnc/passwd geschrieben.
$> su - MYUSER #~> vncpasswd Password: Verify:
Ich habe vorhin gesagt, es gäbe drei verschiedene Arten, den VNC-Server zu starten. Also beginnen wir mit der...
Variante 1:
#~> vncserver
New 'MYHOSTNAME:1 (MYUSER)' desktop is MYHOSTNAME:1
Starting Applications specified in /home/MYUSER/.vnc/xstartup Log file ist /home/MYUSER/.vnc/MYHOSTNAME:1.log
Damit kann man nun auf einem anderen Rechner den vncviewer starten. Als VNC Server muss in diesem Fall MYREMOTEHOST-IP:5901 eingegeben werden. Nach der Eingabe des vorher vergebenen Passwortes erreicht man nun zwar den entfernten Rechner, nicht aber den eigenen, aktuellen Desktop, wie man es eventuell von Windows her gewöhnt ist. Diese Variante hier ist dafür aber sehr schnell! Per default wird in diesem Fall nur ein xterm und der twm gestartet. Dies muss aber nicht so bleiben, denn was gestartet wird, kann in der Datei ~/.vnc/xstartup definiert werden, dabei ist xstartup nach dem selben Prinzip wie die .xinitrc aufgebaut! Will man zB openbox anstelle von twm als Window Manager in der VNC-Session verwenden, kann in der Datei xstartup einfach "twm &" mit "openbox &" ersetzt werden. Alternativ kann sogar die gesamte .xinitrc eingelsen werden. Wer das will, kann das File folgendermassen anpassen:
#~> vi .vnc/xstartup
#!/bin/bash [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources . ~/.xinitrc
Um eine neue Konfiguration zu aktivieren, muss der vncserver gestoppt und neu gestartet werden. Dies kann mit den folgenden Kommandos realisiert werden:
#~> vncserver -kill :1 #~> vncserver
Oft will man aber, wie unter Windows, per VNC den aktuellen Bildschirminhalt anzeigen lassen. Auch dies ist möglich - damit sind wir nun bei...
Variante 2: Um die Übernahme des derzeit aktiven Desktops zu ermöglichen, wird im VNC-Package als erste Möglichkeit das Tool x0vncserver mitgeliefert. Hierbei handelt es sich aber um einen extrem ineffizienten Weg, da dieser einfach ununterbrochen jede Anzeige vom X-Server abfragt und an den Client liefert. Für die tägliche Arbeit ist dieser also nicht geeignet - aber der Vollständigkeit halber möchte ich ihn hier trotzdem nicht vernachlässigen:
Gestartet wird mit dem Pfad zum mit vncpasswd erstellten Passwort als Parameter:
#~> x0vncserver -PasswordFile .vnc/passwd
Parameter zu x0vncserver gibts per Manpage oder mit x0vncserver -h. Jetzt kann mit dem VNC Viewer und der Eingabe von MYREMOTEHOST-IP:5900 als Server String der momentane Desktop übernommen werden. Leider ist die Performance dabei nicht gerade überwältigend - im Gegenteil, bei dieser Variante schläft einem das Gesicht ein. Und deshalb last but not least....
Variante 3:
Mit dieser Variante gelangen wir ans Ziel, wenn die Aufgabe lautet, die aktuelle Session, also das :0-Display, zu übernehmen. Hierbei wird das $DISPLAY direkt auf den entfernten Rechner übertragen - und man erreicht damit um Faktoren bessere Performance als mit dem x0vncserver
Dieser Weg wird damit realisiert, dass ein ladbares Modul in Xorg (oder XFree86 > Version 4) eingebunden wird, welches den X-Server um diese Funktionalität erweitert:
Zuerst muss sichergestellt werden, dass das shared object vnc.so am richtigen Platz liegt. Der Pfad dahin muss dem im untenstehenden Beispiel entsprechen. Wenn dies nicht so sein sollte, muss das Modul dorthin kopiert werden. Am einfachsten kann man die Lage der Datei mit dem Befehl locate herausfinden:
$> locate vnc.so /usr/X11R6/lib/modules/extensions/vnc.so
Ist der Pfad so wie hier beschrieben, muss als nächstes die xorg.conf angepasst werden, damit das Modul geladen wird. Dazu sind zwei Einträge nötig: Im Abschnitt Module muss Load "vnc" eingetragen werden, damit das Modul beim Start des X-Servers eingebunden wird, und in der Sektion Screen muss die Zeile Option "passwordFile" "/home/MYUSER/.vnc/passwd" eingetragen werden, damit beim Login das Passwort mit dem im Passwordfile verglichen werden kann.
Das ganze sieht dann ungefähr so aus:
$> vi /etc/X11/xorg.conf ... Section "Module" ... Load "vnc" EndSection ... ... Section "Screen" ... Option "passwordFile" "/home/MYUSER/.vnc/passwd" EndSection ...
Wurde alles dies erledigt, muss X neu gestartet werden. Danach kann per VNC-Client der aktive Screen auf dem entfernten Rechner übernommen werden.