XDMCP Terminal-Server#
Manchmal ist es sinnvoll, einen anderen Rechner fernsteuern zu können. Am komfortabelsten geht dies, wenn man die gesamte Oberfläche (z.B. KDE) auf einen anderen Rechner umgeleitet werden könnte. Dies geht unter Linux am besten mit dem XDMCP-Protokoll.
Wer ist hier der Server?#
Zur Terminologie: Der X-Server ist der Rechner, auf dem die Oberfläche dargestellt wird, also der Rechner, vor dem der Benutzer sitzt. Die Programme, die auf einem entfernten Rechner (den der normale Benutzer als Server bezeichnen würde), können über diesen X-Server aus Ihrer Sicht dem "entfernten" Benutzer Bildschirmausgaben senden.
Wie funktioniert's?#
In einem normalen KDE-System wird der X-Server vom KDE-Programm "KDM" verwaltet und gestartet. KDM ist der eigentliche Login-Manager. In einem normalen Linux-System geht dieser Login-Manager hin und startet einen X-Server (also eine Bildschirmoberfläche). Nachdem er auf diese Weise ein Terminal "gefunden" hat, sendet er dort ein Fenster hin, damit man sich einloggen kann.
So weit so gut. Nun kann man dies jedoch auch anders einrichten. KDM kann auch gar keinen oder mehrere X-Server (Alt-Shift-F7 und Alt-Shift-F8) öffnen. Darüberhinaus können aber auch andere X-Server über das Netzwerk sich beim KDM melden und bekommen dann ebenfalls ein Login-Fenster.
Um das so einzurichten, muss man zuerst mal den KDM (der auf dem eigentlichen Server läuft) so einrichten, daß er Verbindungen übers Netzwerk annimmt. Danach muss man einen X-Server starten, der übers Netzwerk eine Verbindung sucht.
Konfiguration#
KDM (auf dem Terminal-Server)#
Die Verbindung per XDMCP grundsätzlich erlauben geht in der Datei /etc/kde3/kdm/kdmrc. Hier wird folgendes eingetragen:
[Xdmcp] Enable=true
Dann muss angegeben werden, welche Rechner speziell sich einloggen dürfen. Im Beispiel gebe ich einfach mal alles frei. Dies geht in der Datei /etc/kde3/kdm/Xaccess durch eine Zeile, die einfach ein Sternchen enthält.
Um die Änderungen nun zu aktivieren, sollte man nun den KDM neu starten:
/etc/init.d/kdm restart
X (auf dem Arbeitsplatz)#
Man startet den X-Server per Konsole mit folgendem Befehl:
X -query terminalservername
Ggf. sollte man vorher mit /etc/init.d/kdm stop seine eigene graphische Oberfläche beenden. Wer bereits einen X-Server offen hat und einen zweiten auf Shift-Alt-F8 öffnen will, kann z.B. auch folgendes machen:
X :1 -query terminalservername
Statt dem Namen kann man natürlich auch die IP-Adresse angeben. Damit kann man insbesondere ausschliessen, das Probleme nur mit der Namensauflösung zusammenhängen (ein immer wieder gern gemachter Fehler bei allen möglichen Netzwerkdiensten).
graphisch auswählen, das man auf einen fremden Rechner will
Man kann auch das lokale kdm (auf dem Arbeitsplatz) ao
konfigurieren, daß man beim Starten des Rechners aussuchen kann, ob
man auf dem eigenen oder dem entfernten Rechner arbeiten will.
Näheres zu den kdm-Optionen gibts übrigens auf
http://docs.kde.org/stable/en/kdebase/kdm/kdm-files.html.
Man
schreibt folgende Zeilen in die Datei /etc/kde3/kdm/kdmrc in
die Sektion [X-*-Greeter]:
LoginMode=DefaultLocal ChooserHosts=terminalserver.localdomain
(Man kann letztere Zeile wohl auch weglassen, wenn der Terminalserver per Broadcast zu erreichen ist.)
Chooser konfigurieren#
Falls man mehrere Terminal-Server im Netz hat, kann man nun noch weiter gehen. Es gibt sog. indirekte Querys, bei denen der XDMCP-Server gar nicht selber das Login bereitstellt, sondern die Anfrage nur "durchreicht" an den eigentlichen KDM-Server. Interessant wird dies vor allem unter Einsatz des Choosers. Dann öffnet sich als allererstes ein Chooser-Fenster, in dem man alle bekannten XDMCP-Server aufgelistet bekommt. Man kann sich dann einen aussuchen, indem man ihn anklickt. Daraufhin erscheint dann als nächstes das Login-Fenster des entsprechenden Rechners. Hierzu sind zwei kleine Änderungen nötig:
Auf dem Server, der die erste Anfrage bekommt, muss der chooser aktiviert werden. Dazu schreibt man in die Xaccess-Datei eine Zeile wie diese:
* CHOOSER BROADCAST
Wenn man (nur) spezielle Terminalserver ansprechen will oder diese durch einen Broadcast nicht erreichbar sind, kann man auch Ihre Namen angeben:
* CHOOSER susi heidi franzi
Dann ersetzt man beim Start des X-Servers "-query" durch "-indirect". Schon kanns losgehen. -- ThomasBayen
Tips und Links#
Man kann wie unter KdeSessions beschrieben auch einen zweiten X-Server auf demselben Rechner starten, der dann vom gleichen KDM mit einem Login-Fenster versorgt wird.
Wenn einem eine solche einfache X-Verbindung nicht ausreicht, kann
man mit dem NX-Server
einerseits
X-Verbindungen auch über enge Leitungen mit hoher Latenz rasant
beschleunigen und andererseits auch wahlweise VNC- und
Windows-Terminalserver-Verbindungen einbinden. Näheres dazu in
einem Pro-Linux-Artikel
. Debian-Pakete werden z.Zt. unter
http://www.kalyxo.org/twiki/bin/view/Main/NoMachineNX
zusammengestellt.
Probleme#
Lieber Thomas, das kann's nicht alleine sein. Ich habe all dies ( unter KDE3.1 ) zu Hause gemacht. Ich erhalte mit "X -query terminalserveradresse" vom anderen Rechner aus zwar ein X-Windows aber keine Möglichkeit mich anzumelden. Nur das Kreuz lacht mich an. -- KaiEhlers
Seit dem ich mit ssh und XServer ( siehe SshMitXserver ) herumgefummelt habe, funktionierts. Das einzige, was ich aber für ssh verändert habe : Ich habe in der Datei /etc/ssh/sshd_config den Eintrag " forwardX " auf " yes " gesetzt. Daran kann's nicht liegen. -- KaiEhlers
Und wie geht's bei Suse 9.1?#
Im Prinzip genauso! Aber bei Suse ist ja immer irgendwas anders. /etc/kde3/kdm gibt es nicht. Hier wird mit xdm gearbeitet und es ist alles schon vorbereitet. XDMCP ist aktiviert - wo, dass weiss ich nicht. In der
/etc/x11/xdm/Xaccesssind mit * schon aller Rechner erlaubt. Hier kann man ggf. Einschränkungen machen. Suse hat aber den Port deaktiviert. Dieser muss in /etc/services aktiviert werden.
Zeilen vom Port 177 : xdmcp 177/tcp xdmcp 177/udp
Bei Suse wird nun
/etc/init.d/xdm restartausgeführt. Weiter wie oben beschrieben. Bei Suse am besten mit ALT+STRG+F2 ein TTY-Konsole öffnen und
X :1 -query terminalservernameaufrufen.
So nun noch für blinde Anfänger wie mich: das X wird groß geschrieben!
Der letzte Stolperstein liegt im Namen des Terminalservers. Wer hier Suse 9.1 Standard-Installation hat, bei dem heißen alle Rechner "linux". Der Rechnername bei der Samba-Installation hat hier keine Bedeutung! Also entweder die IP-Adresse angeben oder die Rechnernamen eindeutig machen. Siehe auch oben. -- Rolf Hagenguth
Xserver für Windows#
Als nächstes habe ich mir TNTXserver für Windows installiert http://www.microimages.com.
Von hier
klappt der Zugriff aber bisher nicht. Hat damit oder mit einem
anderen Xserver irgendwer schon Erfolg gehabt? -- Rolf Hagenguth
Ich benutze hier Cygwin. Da ist seit einiger Zeit auch eine
Portierung von XFree-86 drin: http://sources.redhat.com/cygwin/
-- PeterHormanns
Wau, das Ding ist ja geil! Ich weiß zwar nicht was man alles machen kann, aber nach der Installation und dem Start (Icon auf dem Desktop) öffnet sich eine Textconsole und man kann Linux-Commandos eingeben,insbesondere "X -query .......". Ex tut sich eine X-Session auf und kurze Zeit später das Loginfenster des angegebenen Terminalservers. Die Geschwindigkeit ist hervorragend. Es werden auf ca. 130MB eine Linux - Dateistruktur (nicht Dateisystem) abgebildet. Das ist zwar ein bischen happig für einen Xserver, aber man kann alle hardwareunabhängigen Unix-programme, die einem als Source vorliegen zum laufen bringen. Bei der Installation werden eine ganze Menge an Programmen direkt installiert, daher die 130 MB.
Wenn man wie ich auf Windows noch eine Zeitlang angewiesen ist, ist das eine prima Sache um mal eben etwas auf dem Server aus zu probieren. Es funktioniert auf Anhieb, was ich vom TNTXserver nicht behaupten kann. -- RolfHagenguth