Starten von X-Anwendungen auf fernen Rechnern


Useraccount A befindet sich auf PC earth, der über ein Netzwerk mit Laptop moon verbunden ist. User A will Anwendungen von seinem Laptop verwenden, auf dem er sich üblicherweise mit Useraccount B anmeldet. Die Bildschirmausgabe soll aber auf den PC umgeleitet werden, weil dort der Bildschirm größer ist und die Maus leichter bedienbar (oder waum auch immer).

DISPLAY umleiten

Das Umleiten des Displays ist einfach. Angenommen, man sitze als User A an der Maschine "earth", will eine Anwendung auf "moon" starten und die Anzeige aber auf "earth" umleiten:

Man öffnet auf "earth" als User A eine Konsole. Zunächst muß "moon" erlaubt werden, das Display von "earth" zu benutzen. Das erledigt man mit dem Befehl

a@earth:~ > xhost moon
Dabei ist a@earth:~ > der Kommandozeilenprompt, den muß man nicht angeben. Der Prompt soll nur verdeutlichen, wo man sich gerade befindet ;-)

Anschließend verbindet man sich mit telnet nach "moon" und meldet sich dort als Benutzer B an. Hier leitet man jetzt das Display um. Das wird einfach dadurch erledigt, indem man die Umgebungsvariable DISPLAY verändert.

b@moon:~ > export DISPLAY=earth:0
Jetzt kann man X-Anwendungen über die Kommandozeile starten, deren Ausgabe dann auf "earth" erfolgt. Beispielsweise:
b:moon:~ > ./netscape
Dieses Verfahren ist jedoch nicht geeignet, will man Anwendern ohne weitergehende Systemkenntnisse auf diese Weise Zugang verschaffen. Meiner Freundin dürfte ich das eben beschriebene Verfahren nicht zumuten, denn sie erwartet, daß da ein Icon ist, das sie anklicken kann, und der Rest erledigt sich von alleine, sprich nach einer kurzen Wartezeit startet das Programm.

Die Grundlagen hierfür werden im nächsten Abschnitt beschrieben.

Login per Secure Shell ssh

Wenn ein Anwender auf ein Icon klickt um eine Anwendung zu starten, dann erwartet er, daß nicht jedesmal ein Paßwort abgefragt wird. Damit der Laptop moon das Einloggen mit Useraccount B ohne Paßwortabfrage akzeptiert, muß auf dem PC earth der Benutzer A mit ssh-keygen ein Schlüsselpaar erzeugen, das sich dann im Verzeichnis ~/.shh wiederfindet. identity ist der private Schlüssel, der auf earth verbleibt, während der öffentliche Teil identity.pub beispieltsweise per ftp auf den Laptop moon übertragen wird. Der Inhalt wird in die Datei authorized_keys übertragen, die sich unter ~/.ssh des Useraccounts B auf Laptop moon befindet.

Jetzt kann sich User A angemeldet an PC earth mit dem Befehl ssh moon am Laptop moon als Benutzer B anmelden, ohne daß ein Paßwort abgefragt würde. Der Befehl ssh läßt sich auch nutzen, um Anwendungen direkt zu starten. Dazu ist der Schalten -n vonnutzen. Man muß dann allerdings genau wissen, wo sich die zu startenden Anwendung befindet. Beispiel: shh -n moon ./office52/soffice startet StarOffice5.2 ausgehend vom Home-Verzeichnis des angemeldeten Benutzers. Eine explizite Umleitung des DISPLAYs wie oben beschrieben ist bei ssh -n nicht mehr nötig.

Bei Anwendungen, die man anderen Benutzern zur Verfügung stellt, weiß man in der Regel, wo sich diese befinden. Also läßt sich auf der Maschine "earth" ein kleines bash-Skript schreiben, das mit ssh -n moon xyz die gewünschte Anwendung startet. Diesem Skript zieht man aufs Desktop und verpaßt ihm ein schönes Icon. Dann kann der Anwender ganz leicht die Anwendung starten, ohne zu merken, daß diese auf einem fernen PC läuft.
 

Beispiel:


           +-----+          +-------------------------+
           | ISP | ISDN     | stargate.ourworldnet.de |
           |     |----------| Internet-Gateway        |
           +-----+          +-------------------------+
                                         |
                                         |
                                      +-----+
                         +------------| Hub |--------------------------+
                         |            +-----+                          |
                         |               |                             |
                         |               |                             |
          +----------------------+ +---------------------+ +--------------------+
          | earth.ourworldnet.de | | moon.ourworldnet.de | | sun.ourworldnet.de | Clients
          +----------------------+ +---------------------+ +--------------------+

Auf dem Internet-Gateway befindet sich das Programm kimon, mit dem man die ISDN-Aktivität beobachten und in gewissen Grenzen steuern kann. Das Gateway selbst ist ohne X konfiguriert, die Ausgabe soll also auf den Clients erfolgen, wenn dort X gestartet wurde.
Mit den folgenden zwei Skripten geht das ganz einfach:
 

kimon.client.sh
# !/sbin/bash
# Ausgabe von Host stargate auf Client zulassen ...
xhost +stargate
# Serverscript starten und dabei eigenen Hostnamen übergeben ...
ssh -n stargate ./kimon.server.sh $HOSTNAME

 
kimon.server.sh
# !/sbin/bash
# X-Ausgabe auf Zielhost umbiegen, Zielhost wird als Parameter übergeben
export DISPLAY=$1:0
# Programm im Hintergrund starten
/opt/kde/bin/kimon &

Tipp:

Man kann diese Skripte in ein Verzeichnis legen, auf das man anderen Hosts Zugriff gewährt, also z.B. per NFS. Dieses Verzeichnis mountet man automatisch an eine bestimmte Stelle des lokalen Verzeichnisbaums, so daß man das jeweilige Client-Skript unter KDE per Autostart starten kann. Vorteil: Die Skripte liegen an genau einer Stelle und müssen nicht auf die Clients verteilt werden.


(C) 2000 by ourworldnet.de
last changes: October 16, 2000
this page was created with Mozilla MileStone17