Diese Seite wurde am 1. April 2006 vorübergehend auf
statisch umgestellt. Einige der vorgestellten Tutorials sind veraltet,
Links tot und die Zeitangaben stimmen auch nicht. Im Laufe
der nächsten Monate wird eine überarbeitete Seite folgen, auf die dann
weitergeleitet wird.
Rootless X auf Windows
Achtung: dieses Tutorial benötigt Überarbeitung, so sind z.B. Scripte zum Setzen der Tastaturbelegung nicht mehr nötig. Eine gedruckte Version mit Überarbeitungen finden Sie in der PC!Linux 4/2004.
Sie kennen das Problem: zur Verwaltung eines Linux-Servers wäre es ganz
praktisch die Fenster von Client- und Server-Programmen nebeneinander auf
einem Rechner nutzen zu können? Oder Sie entwickeln Software oder Webseiten
und möchten die Funktionalität auf zwei Systemen gleichzeitig
testen können? Ohne KVM, ohne langsamer VM-Ware und ohne kompletten Desktop,
wie er bei VNC verwendet wird? Oder eine wichtige Anwendung steht nur unter
Linux oder Unix zur Verfügung.
Seit der Cygwin-Release des X-Servers gibt es eine komfortable freie
Lösung für all diese Probleme, die wir auf dieser Seite
näher beschreiben möchten:
Dieses Dokument beschreibt die Installation und Konfiguration des Cygwin
X-Servers zum sicheren und komfortablen Zugriff auf einen Unix-Rechner.
Dabei wird besonderen Wert darauf gelegt, daß auf dem Unix-Rechner
als einziger Dienst SSH von außen zugänglich sein muß.
Dies erlaubt den Einsatz dieser Lösung auch in Umgebungen, in denen man
selbst keine Root-Rechte hat, man aus Sicherheitsgründen auf
die unverschlüsselte Übertragung von X verzichten möchte oder
wegen der geringen Bandbreite Kompression gewünscht ist.
Zur Vereinfachung des Handlings wird X für den "Rootless Mode" konfiguriert.
Die Fenster des Unix-Rechners erscheinen auf dem Windows-Desktop. Ein Klick
auf ein Icon oder einen Menüeintrag startet den X-Server und die KDE-Leiste
(der Screenshot zeigt die Microsoft Webseite unter einem Konqueror zusammen mit der KDE-Startleiste auf einem Win98-Desktop).
Download der Cygwin-Distribution
Die Cygwin-Distribution ist auf http://www.cygwin.com/
erhältlich. Laden Sie die setup.exe
herunter und speichern Sie diese ab (Sie brauchen sie noch öfters).
Nach Aufruf der setup.exe
müssen Sie zunächst einen Mirror auswählen (Screenshot). Nicht alle Mirror haben alle aktuellen Pakete vorrätig, manchmal sind mehrere Versuche notwendig.
Bei der Paketauswahl müssen Sie darauf achten, daß sowohl
OpenSSH, aus der Paketgruppe "Net" (Screenshot) als auch
XFree86 (Screenshot) ausgewählt werden.
Abhängige Pakete werden automatisch selektiert. Die zusätzliche
Auswahl von Schriften in 100dpi (auch unter XFree86) ist sinnvoll.
Der Installer von Cygwin benötigt recht lange, um den Paketindex aufzubauen.
Unter Umständen können hierfür 15 Minuten vergehen, in denen der Installer abgestürzt scheint, aber tatsächlich munter weiterarbeitet.
Bei der gesamten Cygwin-Installation werden je nach Umfang ca. 50MB bis 80MB heruntergeladen,
d.h. Modem- oder ISDN-Nutzer sollten nach einer aktuellen
Cygwin-Distribution auf CD Ausschau halten.
Erstes Login am Unix-Rechner
Mit dem Klick auf das Cygwin-Icon auf dem Desktop bekommen Sie nun eine Bash,
wie gewohnt, nur daß diese eben unter Windows läuft. Mit dem Kommando
ssh user@192.168.1.247
Password: (Passwort eingeben)
können wir uns nun auf dem Unix-Rechner mit der betreffenden IP-Adresse einloggen. Wird der Befehl ssh nicht gefunden, haben Sie vergessen, das entsprechende Paket zu installieren. Rufen Sie den Installer auf und installieren Sie OpenSSH nach.
Automatisieren des Logins
Wir verwenden SSH mit Public-Key-Authentication. Dazu benötigen wir ein
Schlüsselpärchen. Der private Schlüssel verbleibt auf dem
Windows-Rechner, der öffentliche Schlüssel wird dem Unix-Rechner
bekannt gemacht.
Erzeugen des Schlüsselpaares
Das Schlüsselpaar wird auf dem Windows-Rechner mit dem
folgenden Befehl erzeugt (Screenshot),
die Passphrase bleibt dabei leer:
ssh-keygen -t dsa
Bekanntmachen des öffentlichen Schlüssels
Achtung: bitte prüfen Sie vor dem Kopierversuch, ob auf dem Unix-Rechner ein Verzeichnis ~/.ssh existiert und ob dieses die richtigen Zugriffsrechte (0700) hat. Gegebenenfalls legen Sie es an:
ssh user@192.168.1.247
Password: (Passwort eingeben)
mkdir -m 0700 ~/.ssh/
Zunächst wird der öffentliche Schlüssel auf den Unix-Rechner kopiert...
scp ~/.ssh/id_dsa.pub user@192.168.1.247:~/.ssh/id_dsa.pub.cygwin
Password: (Passwort eingeben)
...und dort dann den zugelassenen Schlüsseln hinzugefügt. Dazu loggen wir
uns auf dem Unix-Rechner ein und fügen den Schlüssel den zugelassenen hinzu (Screenshot):
ssh user@192.168.1.247
Password: (Passwort eingeben)
cat .ssh/id_dsa.pub.cygwin >> .ssh/authorized_keys
Test der Konfiguration
Nachdem die Schlüssel erzeugt wurden, können wir das automatische Login einmal testen. Dazu starten wir einen X-Server, teilen das DISPLAY der Shell mit, loggen uns am Unix-Rechner ein und starten ein grafisches Programm (beispielsweise xclock oder xterm):
X -rootless &
export DISPLAY=localhost:0.0
ssh -C -X user@192.168.1.247 xclock
Es erscheint eine einsame Xclock (Screenshot) im linken oberen Eck des Bildschirmes! Noch fehlt der Windowmanager und die Änderung der Tastaturbelegung (Cygwin kommt gemeinerweise nur mit US-Tastaturlayout). Das erledigen wir gleich mit dem Startscript auf Seiten des Unix-Rechners:
Startscript auf dem Unix-Rechner
Laden Sie zunächst die Datei .Xmodmap.cygwin herunter (an dieser Stelle vielen Dank an Sascha Wüstemann) und speichern Sie selbige auf dem Unix-Rechner unter ~/.Xmodmap.cygwin.
Auf dem Unix-Rechner legen wir in unserem Heimatverzeichnis ein Script
~/startup-unix.sh mit folgendem Inhalt an:
#!/bin/sh
# Bitte Pfad anpassen! (das mit "which kwin"
# herausgefundene Verzeichnis)
KDE_PATH=/opt/kde3/bin
PATH=$PATH:${KDE_PATH}
# Starten des KDE-Windowmanagers
${KDE_PATH}/kwin &
# 5 Sekunden Pause (für langsame Win-Rechner leider notwendig)
sleep 5
# Laden der Tastaturbelegung für Cygwin
/usr/X11R6/bin/xmodmap ${HOME}/.Xmodmap.cygwin
# Starten des KDE-Panels
${KDE_PATH}/kicker
Machen Sie das Script mit dem Befehl chmod +x ~/startup-unix.sh ausführbar.
Auch hier testen wir wieder, indem wir am Windows-Rechner folgende Befehlsfolge eingeben:
X -rootless &
export DISPLAY=localhost:0.0
ssh -C -X user@192.168.1.247 ~/startup-unix.sh
Was wir nun zu sehen bekommen, entspricht schon dem Endergebnis, wir benötigen nur noch ein Startscript für den Windows-Rechner und ein Icon auf dem Desktop:
Startscript auf dem Windows-Rechner
Auf dem Windows-Rechner legen wir in unserem Heimatverzeichnis
(von außerhalb Cygwins ist dieses unter X:\Cygwin\home\username
erreichbar) ein Script ~/startup-win.sh mit folgendem Inhalt an:
#!/bin/sh
UNIX_USER=mattias
UNIX_HOME=/home/mattias
UNIX_IP=192.168.1.247
# Starten des X-Servers
/usr/X11R6/bin/X -rootless &
# Setzen der DISPLAY-Variable
export DISPLAY=localhost:0.0
# Login und triggern des Startup-Scripts auf Unix-Seite
ssh -C -X ${UNIX_USER}@${UNIX_IP} ${UNIX_HOME}/startup-unix.sh
Nun sind wir ganz nahe dran... Es reicht bereits der folgende Befehl, um unser
KDE-Panel auf den Windows-Desktop zu bekommen:
sh startup-win.sh
Den Rest macht ein...
Icon auf dem Desktop
Jetzt genügt es, auf dem Windows-Desktop eine Batchdatei mit folgendem Inhalt anzulegen:
@echo off
X:
chdir X:\cygwin\bin
bash /home/mattias/startup-win.sh
Der Laufwerksbuchstabe und der Username sind natürlich noch anzupassen.
Ein Klick auf die Batchdatei und das KDE-Panel erscheint auf dem Windows-Rechner...
Have fun!
Ihr Mattias Schlenker
|