Berny's Knowledgebase als Newsfeed

Problemstellung

Es soll irgendeine grafische Anwendung auf einem entfernten Linux-PC gestartet werden. Normalerweise kein Problem, Login per SSH und über X-Forwarding kommt das Fenster der Anwendung auf den lokalen PC. Was aber wenn auf dem PC kein X-Server installiert ist? (z. B. Default-Windows-PC)

Lösung

Wenn auf der entfernten Linux-Maschine das Paket vnc-server installiert ist, kein Problem: ssh auf die Maschine und mit dem Kommando

vncserver

einen neuen VNC-Server starten. Dieser hängt sich nicht - wie bei anderen Betriebssystemen üblich - an die lokale graphisch Benutzeroberfläche, sondern startet eine eigenständige Session, die anderweitig auf der Linux-Maschine erst mal nicht weiter auffällt. (Egal ob auf der lokalen Konsole eine andere graphische Session läuft oder auch nicht.)

Der Output im SSH-Fenster sieht ähnlich aus wie:

New 'myworkstation.example.com:1 (berny)' desktop is myworkstation.example.com:1
Starting applications specified in /home/berny/.vnc/xstartup
Log file is /home/berny/.vnc/myworkstation.example.com:1.log

ausserdem fragt der VNC-Server beim ersten Start nach einem VNC-Passwort, das man dann geeignet setzt.

Anschließend kann man sich vom Client-PC mit dem VNC-Viewer auf den VNC-Server connecten.

C:\Programme\VNC\vncviewer.exe

(Ansonsten handelt es sich auch nur um eine einfache .exe-Datei, die keinerlei Installation braucht und einfach auf einem beliebigen PC ausgefuehrt werden kann.) Download unter http://www.realvnc.com/products/free/4.1/winvncviewer.html

Es erscheint ein kleines Fenster, in dem man angibt wohin man sich connecten moechte, in unserem Beispiel also

myworkstation.example.com:1

Jetzt wird das VNC-Passwort abgefragt und man ist drin.

Von der laufenden Session kann man sich beliebig oft trennen (einfach das VNC-Fenster schliessen) und später wieder connecten (einfach vncviewer wieder starten wie oben beschrieben).

Wenn man die Session nicht mehr braucht, sollte man den VNC-Server wieder beenden, in unserem Beispiel mit Display-Nummer 1 also

vncserver -kill :1

verwenden. Sollte man aus Sicherheitsgründen auch immer dann tun, wenn man die Session längere Zeit nicht braucht.

Beim ersten Start hat unsere Session noch etwas spartanisch ausgesehen (nur twm und xterm). Für viele Anwendungen reicht das natürlich vollkommen. Man hat aber auch die Möglichkeit, sich eine vollstädige KDE- oder Gnome-Session zu starten. Dazu einfach

~/.vnc/xstartup

auf dem entfernten Linux-Rechner bearbeiten. (Das File ist kommentiert, man findet die nötigen Änderungen also schnell raus.)

Übrigens: Fuer allen weiteren Starts merkt der VNC-Server sich das einmal gesetzte Passwort. Man sollte sich also daran auch später noch erinnern. Wenn man’s vergessen hat:

rm ~/.vnc/passwd

Beim nächsten Start fragt er dann wieder (genau 1x).

Noch ein "übrigens": Man kann auch mehr als einen VNC Server gleichzeitig am laufen haben, wer sowas braucht, z. B. auch unter unterschiedlichen User-Accounts. Diese werden dann über die Display-Nummer unterschieden.

Auflösung

Wem die Standard-Auflösung des virtuellen Desktops (1024x768) nicht gefällt, der gibt beim Starten des VNC-Servers einfach eine andere Auflösung mit:

vncserver -geometry 1280x1024
Warning
Vorsicht:

Alle über die VNC-Verbindung übertragenen Daten werden im Klartext über’s Netz geschickt.

Abhilfe:

SSH-Tunnel verwenden Dazu einen SSH-Tunnel von 5901 auf 127.0.0.1:5901 aufbauen und dann im VNC-Viewer einfach

localhost:1

ansprechen. Port 5901 entspricht Display-Nummer 1, ggf. weitere VNC-Server werden auf Display-Nummer 2 = Port 5902 usw. gestartet.

Weiterführende Infos

zu dem Thema: c’t (http://www.heise.de/ct/) 10/2005 S. 108f