claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 11/2004   »   Ausgabe bestellen

Linux-Programme auf anderen Rechnern starten

Fenster in der Ferne

von Hans-Georg Eßer


X Window, der Grafikmodus von Linux, ist netzwerkfähig. Das bedeutet, dass Linux-Programme auch auf einem anderen PC im lokalen Netz laufen können und das Programmfenster trotzdem auf Ihrem Rechner erscheint.

Nutzen Sie mehrere PCs unter Linux? Dann haben Sie bestimmt ein kleines LAN, also ein lokales Netzwerk, eingerichtet. Dieses Netzwerk können Sie nicht nur nutzen, um sich mit allen Rechnern eine Internet-Verbindung zu teilen, Sie können auch die Rechenleistung weiterer (vielleicht gerade ungenutzter) PCs ausnutzen und einige Programme nicht am aktuellen Arbeitsplatz, sondern auf einem der übrigen PCs starten.

"Remote" arbeiten

Man muss nur wissen, wie es geht. Erste Voraussetzung ist, dass Sie einen zweiten Linux-PC über das Netzwerk erreichen können -- dazu benötigen Sie seine IP-Adresse, die in lokalen Netzen oft die Form 192.168.x.y hat. Für die folgenden Beispiele gehen wir davon aus, dass Sie am PC mit der IP-Adresse 192.168.1.1 sitzen und der zweite Rechner die Adresse 192.168.1.2 hat. Wenn Sie Ihren Rechnern auch Namen gegeben haben, verwenden Sie statt der IP-Adressen die (einfacher zu merkenden) Namen.

Prüfen Sie zuerst, ob Sie den entfernten Rechner wirklich erreichen können. Dazu öffnen Sie mit [Alt-F2] und Eingabe von konsole ein Terminal-Fenster, in dem Sie den Befehl

ping 192.168.1.2

eingeben. Sie sollten eine Ausgabe der folgenden Form erhalten:

$ ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.409 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.373 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.361 ms
[Strg-C]
--- 192.168.1.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.361/0.381/0.409/0.020 ms

Nach einigen Zeilen drücken Sie [Strg-C], um die Ausgabe von ping zu beenden -- es erscheinen dann noch die Statusinformationen der letzten drei Zeilen.

Wenn das klappt, bauen Sie mit ssh [1] eine Verbindung zum entfernten Rechner auf. Dabei verwenden Sie die Option -X, mit der Sie die Unterstützung für das Ausführen von grafischen Programmen auf dem Zielrechner aktivieren -- das ganze nennt sich X-Weiterleitung oder auf Englisch "X forwarding". Wichtig ist, dass Sie ein großes "X" eingeben; mit einem kleinen "x" erreichen Sie genau das Gegenteil, die X-Weiterleitung funktioniert dann nicht.

esser@sony:~$ ssh -X 192.168.1.2
Password: .....
Last login: Mon Sep 13 12:48:27 2004 from server
Have a lot of fun...
esser@server:~$ _

Jetzt sind Sie auf dem Zielrechner angemeldet, wie Sie am veränderten Shell-Prompt (mit dem Namen des zweiten Rechners) erkennen. Sie können nun ein grafisches Programm aufrufen, z. B. den Web-Browser Mozilla. Dazu geben Sie den Befehlsnamen einfach so ein, wie Sie das auch in der "lokalen" Shell tun würden.

Abb. 1: Das FTP-Programm "gftp" wurde auf einem entfernten Rechner gestartet, weil es auf dem eigenen PC nicht installiert war.

Nach kurzer Zeit erscheint das Programmfenster auf Ihrem Desktop (Abbildung 1). Das Programm selbst läuft aber nicht auf Ihrem Arbeitsrechner, sondern auf dem zweiten PC -- deswegen ist (je nach Qualität und Auslastung des lokalen Netzwerks) die Geschwindigkeit beim Aktualisieren des Fensterinhalts etwas niedriger als beim lokalem Arbeiten.

Die Funktionalität der Programme ist aber davon nicht betroffen: Dem Programm ist es egal, auf welchem Rechner es sein Fenster öffnet.

Geht nicht? Probleme mit der X-Weiterleitung

Bekommen Sie beim Start eine Fehlermeldung der Form "Error: Can't open display:"? Dann ist der entfernte Rechner vermutlich so konfiguriert, dass er die Weiterleitung für das X-Protokoll unterbindet. Das ist in der Datei /etc/ssh/sshd_config geregelt.

Öffnen Sie auf dem entfernten Rechner (!) mit Root-Rechten (z. B. über [Alt-F2], kdesu kwrite /etc/ssh/sshd_config und Eingabe das Root-Passworts) diese Datei und suchen Sie nach einem Eintrag der Form

X11Forwarding no

In dieser Zeile ändern Sie "no" zu "yes", also

X11Forwarding yes

und speichern die Datei. Danach muss der SSH-Server auf dem entfernten Rechner neu gestartet werden -- das geht nur über die Shell: Öffnen Sie mit [Alt-F2] und konsole ein Terminal-Fenster und geben Sie die folgenden Befehle ein:

$ su
Password:
# /etc/init.d/sshd restart
sshd stoppen:    [  OK  ]
sshd starten:    [  OK  ]
# exit
$

(Unter SuSE Linux können Sie statt des langen zweiten Befehls auch rcsshd restart eingeben.) Danach sollte die X-Weiterleitung funktionieren.

Nicht geteilt

Anders als bei VNC [2] wird hier keine bereits laufende Sitzung dupliziert. Die Programmfenster, die Sie über die X-Weiterleitung öffnen, erscheinen also nur auf Ihrem Rechner und nicht gleichzeitig auf dem entfernten Rechner, der das Programm ausführt.

Es ist allerdings auch möglich, nicht nur ein einzelnes Programm, sondern den gesamten Desktop auf dem entfernten Rechner laufen zu lassen. Das nennt man Terminal-Modus -- der Rechner, an dem Sie sitzen, heißt dann Terminal oder "Thin Client", und schon der grafische Login-Dialog ist ein Programm, das auf dem entfernten Rechner läuft. Im Normalfall wird Ihr Rechner aber kein Terminal, sondern ein vollwertiger Rechner sein.

CDs brennen

Besonders nützlich ist das entfernte Ausführen von Programmen, wenn es im lokalen Netz nur einen CD-/DVD-Brenner gibt: Die Daten, die auf die CD sollen, kann man bequem mit dem Konqueror auf den anderen Rechner übertragen (dazu verwendet man das Fish-Protokoll [3]), dann startet man auf dem entfernten Rechner das Brennprogramm, z. B. K3B [4] oder X-CD-Roast [5] (Abbildung 2). Lediglich zum Einlegen der CD/DVD muss man zum zweiten Rechner gehen, und das kann in der Firma auch gleich der Kollege erledigen, der dort arbeitet -- im heimischen Netzwerk sollten die Wege eh nicht allzu lang sein.

Abb. 2: Oben sieht man den Datentransfer über den Konqueror, unten das Brennprogramm, das auf dem entfernten Rechner läuft.

Andere Betriebssysteme

Das X Window System, dessen Features hier verwendet werden, gibt es nicht nur für Linux. Es ist ein Unix-Klassiker, den auch alle anderen Unix-Systeme wie z. B. Sun Solaris und die BSDs verwenden -- interessanter sind aber die beiden großen Desktop-Betriebssysteme Windows und MacOS X.

Das Apple-Betriebssystem verwendet einen BSD-Kernel und ist damit ohnehin mit Linux verwandt. Kein Wunder also, dass MacOS X in aktuellen Versionen auch gleich einen X-Server mitbringt. Damit kann man aktuelle Macs, etwa die neuesten Power- und iBooks oder iMacs problemlos zur Fernsteuerung eines Linux-PCs einsetzen (Abbildung 3). Umgekehrt geht es leider nicht, da die meisten MacOS-Programme keine X-Programme sind -- hier hilft aber VNC [2] weiter.

Abb. 3: MacOS X bringt den X-Server schon mit und kann darum sofort Programmfenster von entfernten Linux-PCs anzeigen.

Windows hat mit Unix/Linux wenig zu tun, aber auch für Windows gibt es X-Server. Ist der Hauptarbeitsrechner also eine Windows-Maschine, kann man das gelegentliche Aufrufe von Linux-Tools auch bequem vom Windows-PC aus erledigen, dazu muss man nur einen X-Server für Windows nachinstallieren [6], z. B. Exceed [7,8] (Abbildung 4).

Abb. 4: Unter Windows muss man einen X-Server nachinstallieren, im Bild wird das kommerzielle Exceed verwendet.

X oder VNC?

In vielen Fällen hat man die Wahl zwischen X und VNC. Warum sollte man sich für die eine oder andere Variante entscheiden?

Mit VNC holen Sie sich den kompletten Desktop eines anderen Rechners auf den eigenen Bildschirm. Das erlaubt z. B. das gemeinsame Bearbeiten eines Dokuments, wenn an beiden Rechnern Anwender sitzen. Support-Personal in der Firma schätzt dieses Feature auch, weil der Anwender mit einem Problem gleich live vorführen kann, was nicht richtig funktioniert. Schließlich ist z. B. beim Wunsch, einen Windows-Rechner fernzusteuern, VNC die einzige Möglichkeit.

Bei der X-Weiterleitung führen Sie Programme vom (und auf dem) entfernten Rechner aus, ohne den dortigen Desktop zu blockieren. So kann man an beiden PCs unabhängig weiter arbeiten. Außerdem ist die X-Verbindung schneller als VNC, was vor allem bei langsamen Netzwerken (z. B. 11-MBit-Funknetze) eine Rolle spielt.

Wie so oft gibt es viele Möglichkeiten, das Ziel zu erreichen. Wählen Sie einfach die für Sie passendste aus. (hge)

Infos
[1] SSH-Artikel: Elisabeth Bauer, "Fernbedienung", EasyLinux 11/2003, S. 72, http://www.easylinux.de/Artikel/ausgabe/2003/11/072-guru-ssh/
[2] VNC-Artikel: Heike Jurzik, "Fernsteuerung", EasyLinux 11/2004 (diese Ausgabe), S. 48
[3] WinSCP und Fish: Heike Jurzik, "Richtig verbunden", EasyLinux 11/2003, S. 18, http://www.easylinux.de/Artikel/ausgabe/2003/11/018-winscp/
[4] K3B-Artikel: Heike Jurzik, "Allesbrenner", EasyLinux 05/2004, http://www.easylinux.de/Artikel/ausgabe/2004/05/016-k3b/
[5] X-CD-Roast-Artikel: Karsten Günther, "Xcdroast", LinuxUser 05/2001, S. 20, http://www.linux-user.de/ausgabe/2001/05/018-xcdroast/xcdroast.html
[6] X-Server unter Windows: Hans-Georg Eßer, "Windows wie Linux", EasyLinux 10/2004, S. 46, http://www.easylinux.de/Artikel/ausgabe/2004/10/046-windows/
[7] Exceed-Artikel: Hans-Georg Eßer, "X-Server für Windows", LinuxUser 11/2002, S. 33, http://www.linux-user.de/ausgabe/2002/11/033-x-server/
[8] Exceed: http://connectivity.hummingbird.com/products/nc/exceed/index.html

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2012 Linux New Media AG | Last modified: 2007-01-25 17:27

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]