PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSH mit X Forwarding?



PistolPete
09.02.05, 12:52
Hallo zusammen,

ich habe ein kleines Problem mit unserem WG-Server.
Ich habe den Server heute mit D.S.L. neu aufgesetzt.
Jetzt läuft er auch prima. SSH funktioniert auch.
Jetzt würde ich aber zusätzlich gerne von meinem PC
aus das X auf dem Server starten und benutzen.
Dazu gehe ich folgendermaßen vor:


#1 Server starten
An meinem Rechner:
#2 $ xinit
#3 $ ssh -l dsl -X 192.168.0.100
#4 $ fluxbox
Dann bekomme ich die Meldung das ein Fehler
aufgetreten ist:


Failed to load groupfile:
BScreen::BScreen: an error occured while querying X server.
another window manager already running on display localhost:10.0.
Fluxbox::Fluxbox: no managable screens found, aborting
Fluxbox: Unknown error
Und dann passiert nix mehr. Er hat einen
halben X-Server gestartet, den ich über STRG+C abwürgen
kann.

Wo kann der Fehler liegen?

Gruß,

PistolenPeter

f_m
09.02.05, 13:04
mach mal ein
init 3 und versuch es nochmal ;)

PistolPete
09.02.05, 13:15
Habe ich ausprobiert, leider ohne Erfolg.
Mein System startet allerdings auch direkt in Runlevel 3.
Hier die Ausgabe von ps -A direkt nach dem Login:

PID TTY TIME CMD
1 ? 00:00:00 init
2 ? 00:00:00 ksoftirqd/0
3 ? 00:00:00 events/0
4 ? 00:00:00 khelper
5 ? 00:00:00 kacpid
23 ? 00:00:00 kblockd/0
33 ? 00:00:00 pdflush
34 ? 00:00:00 pdflush
36 ? 00:00:00 aio/0
24 ? 00:00:00 khubd
35 ? 00:00:00 kswapd0
109 ? 00:00:00 kseriod
188 ? 00:00:00 reiserfs/0
1081 ? 00:00:00 udevd
1275 ? 00:00:00 msp3410 [auto]
1282 ? 00:00:00 tda9840
1493 ? 00:00:00 khpsbpkt
1530 ? 00:00:00 knodemgrd_0
1912 ? 00:00:00 kjournald
2265 ? 00:00:00 syslogd
2269 ? 00:00:00 klogd
2311 ? 00:00:00 rpc.idmapd
2345 ? 00:00:00 smartd
2355 ? 00:00:00 acpid
2367 ? 00:00:00 cupsd
2394 ? 00:00:00 parallel
2405 ? 00:00:00 xinetd
2566 ? 00:00:00 ntpd
2576 ? 00:00:00 vsftpd
2596 ? 00:00:00 crond
2628 ? 00:00:00 xfs
2638 ? 00:00:00 smbd
2642 ? 00:00:00 nmbd
2652 ? 00:00:00 smbd
2653 ? 00:00:00 winbindd
2662 ? 00:00:00 winbindd
2673 ? 00:00:00 atd
2683 ? 00:00:00 dbus-daemon-1
2696 ? 00:00:00 cups-config-dae
2707 ? 00:00:00 hald
2743 ? 00:01:33 NetworkManager
2764 ? 00:00:00 login
2765 tty2 00:00:00 mingetty
2766 tty3 00:00:00 mingetty
2767 tty4 00:00:00 mingetty
2768 tty5 00:00:00 mingetty
2769 tty6 00:00:00 mingetty
3277 tty1 00:00:00 bash
3395 tty1 00:00:00 ps

Gruß,

PistolenPeter

Terran Marine
09.02.05, 18:18
Hallo,

ist auf dem Server das Programm xauth vorhanden ?

Ansonsten geht es über ssh nicht.

Gruß
Terran

mkahle
09.02.05, 22:10
Failed to load groupfile:
BScreen::BScreen: an error occured while querying X server.
another window manager already running on display localhost:10.0.
Fluxbox::Fluxbox: no managable screens found, aborting
Fluxbox: Unknown error
Und dann passiert nix mehr. Er hat einen
halben X-Server gestartet, den ich über STRG+C abwürgen
kann.

Wo kann der Fehler liegen?

Ich kenne zwar fluxbox nicht, aber aus der Fehlermeldung schließe ich, daß es sich um einen Windowmanager handelt.

Die Fehlermeldung besagt, daß auf Deinem (lokalen) X11-Server schon ein Windowmanager läuft (wie bei den meisten, ansonsten macht X11 wenig Spaß). Es macht nun wirklich keinen Sinn, auf Deinem X11 Display einen weiteren Windowmanager zu starten, wenn Deine Windows schon "gemanaged" werden.

Wenn Du wirklich auf dem entfernten Rechner einen Windowmanager starten willst (welchen auch immer) und dieser bei Dir dargestellt werden soll, dann solltest Du eine neue Instanz von X11 auf einer (neuen virtuellen) Konsole starten und dieses Display dann per SSH weiterleiten ...

PistolPete
10.02.05, 19:37
Wenn Du wirklich auf dem entfernten Rechner einen Windowmanager starten willst (welchen auch immer) und dieser bei Dir dargestellt werden soll, dann solltest Du eine neue Instanz von X11 auf einer (neuen virtuellen) Konsole starten und dieses Display dann per SSH weiterleiten ...
Und wie mache ich das?

f_m
10.02.05, 21:13
Und wie mache ich das?

... verstehe ich das richtig? hab ich doch recht weit oben schon mal geschrieben, zum testen könntest du doch einfach mal ohne X booten oder ein init 3 machen, meintest du nicht das würdest du ohnehin tun? :confused:

um eine zweite Instanz zu starten bei X.org

X :1

f_m
10.02.05, 21:27
hmm... bin grad draufgekommen, daß mir mein X.org mit
X :1
zwar eine zweite Instanz des Xservers lädt aber keinen WM startet, und weiß jetzt blöder Weise gar nicht wie ich ihm beibring den StandardWM zu nehmen :ugly:

wie auch immer mit XFree86 geht's so:

startx -- :1

Gruß, f_m

mkahle
11.02.05, 23:04
Also gut, da ich auch bei meinen Kunden immer wieder auf viel Unverständnis stoße, wenn es um das Thema X11 geht:

1. locker machen und vollkommen vergessen, welche Funktion Ihr irgendwelchen Rechnern in Eurem Netzwerk gegeben habt. Ein Fileserver mag zwar ein Fileserver und eine Arbeitsstation mag auch ein Client an diesem Fileserver sein (Gilt analog für Mail-Server, Webserver, Fax-Server, ...), aber vergeßt dies mal und denkt Euch jeden Computer einfach nur als solchen, einen Computer. Nur weil Ihr den Rechner "Server" tauft, ist er nicht immer notwendigerweise auch einer.

2. Ein Server ist ein Rechner, der Resourcen zur Verfügung stellt

3. Ein Client ist ein Rechner der andere Resourcen nutzen möchten

Wenn Ihr nun auf irgendeinem Rechner ein X11-Programm startet, hätte dieses Programm in der Regel auch gerne eine Möglichkeit, etwas an den Benutzer auszugeben, bzw. Eingaben von dem Benutzer zu erhalten. Weder die Ausgabe, noch die Eingabe ist dabei darauf beschränkt am lokalen Rechner stattfinden zu müssen. Dafür existiert das X11-Protokoll.

X11-Programme reden immer mit einem X11-Server, um Resourcen, wie die Tastatur oder Monitor benutzen zu können. Es erfolgt kein direkter Zugriff auf lokal angeschlossene Geräte, sondern sie können über das X11-Protokoll Maus, Tastatur und Monitor des gleichen aber auch eines entfernten Rechners benutzen. Natürlich nur unter der Vorraussetzung, das dieser entfernte Rechner seine Resourcen (Maus, Tastatur und Monitor) auch bereitstellt.

Der Mechanismus, diese Resource bereitzustellen, ist das Starten des X11-Servers auf einem Rechner (auf die mangelhafte Sicherheit von X11 gehe ich hier nicht weiter ein). Die Applikation auf dem entfernten Rechner kann dann (z.B. einfach über TCP (böse Geschichte) oder SSH X11 Portforwarding) auf die Resourcem des bereitstellenden Rechners zugreifen.

Kurz und bündig: Im Sinne von X11 ist der Computer mit Tastatur und Maus und Monitor der Server. Die Maschine, die eine X11-Applikation aufruft und beim X11-Server dargestellt wird ist der Client. Egal welche Rollen die Computer im Sinne von Datei-, Mail, Fax, wie-auch-immer-Diensten haben.

So, und nun zum Thema zurück:

mm... bin grad draufgekommen, daß mir mein X.org mit

X :1
war eine zweite Instanz des Xservers lädt aber keinen WM startet, und weiß jetzt blöder Weise gar nicht wie ich ihm beibring den StandardWM zu nehmen
:o Es geht ja genau darum nicht den WM auf der lokalen Maschine zu starten. Der soll ja auf der entfernten Maschine laufen und die lokalen Resource managen

... da ich jetzt hinreichend müde bin, werde ich dies Thema morgen fortsetzen ...

mkahle
12.02.05, 09:21
... so, also wie erreicht man jetzt, daß der WM auf der entfernten Maschine als Client eines X11-Servers auf der lokalen Maschine läuft?

Ich gehe mal davon aus, daß das Display :0 schon mit einem lokalen X11 und einem lokalen WM belegt ist. Deshalb wird eine neue Instanz von X11 benötigt.
In der Annahme, daß DISPLAY :1 frei ist, erzeugen wir erst einmal ein Magic-Cookie für dieses DISPLAY und zwar bevor der X11-Server gestartet wird:

xauth add :1 . `mcookie`

Danach kann der X11-Server auf Display :1 gestartet werden:

X :1 &
# Wer die ganzen Ausgabe nicht haben möchte, macht es so:
X :1 >~/.X.display-1.log 2>&1 &

Je nach lokaler Distribution wird hierbei auf eine neue virtuelle Konsole umgeschaltet. In den meisten Fällen wird dies die sein, die über STRG-ALT-F8 erreichbar ist. Alles was dort jetzt erst einmal zu sehen ist, ist nichts außer einem Mauszeiger. Was kann man hier machen? Antwort ist: ebenfalls nichts. Um es mit Leben zu füllen, muß eine X11-Client her und am buntesten wird es, wenn man einen WindowManager startet. Da dieser jetzt ja von einem entfernten Rechner laufen soll, schalten wir erst einmal auf die ursprüngliche Konsole zurück und loggen uns per SSH und X11 Forwarding auf dem entfernten Rechner ein:

STRG-ALT-F7 # um auf die Ursprungs-Konsole zurückzukehren
DISPLAY=:1 ssh -X remote-server

An dieser Stelle sollte jetzt erst einmal geprüft werden, ob soweit alles geklappt hat. Dann sollte nämlich die DISPLAY Variable i.d.R auf localhost mit einer Displaynummer >= 10 verweisen.
Beispiel:

[mka@lxmo02 mka]$ echo $DISPLAY
localhost:10.0


Jetzt können hier die X11-Clients gestartet werden. In meinem Fall würde ich als Window-Manager WindowMaker aufrufen, aber es kann auch jeder beliebige andere sein

wmaker

So und nun viel Spaß ...

PistolPete
13.02.05, 04:34
WOW
Mr. mkahle, Du bist echt der Beste :)
Die Erklärung ist Spitze, vor allem das "locker machen und vollkommen vergessen, welche Funktion Ihr irgendwelchen Rechnern in Eurem Netzwerk gegeben habt" war genau der richtige Hinweis ;)

Vielen Dank und Gruß,

PistolenPeter

mkahle
13.02.05, 09:19
Vielen Dank für die Blumen. ;) wenn es hilfreich ist, vielleicht pinnt es ein Mod ja mal in die How-To's