PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kein X über ssh



Knollo_de
21.08.06, 15:46
Hallo!

Ich habe ein Problem mit dem Umleiten von X-Verbindungen zwischen zwei Linux-Hosts (Kubuntu 5.10 als Server und Redhat Fedora 3 als Client) und bin auch nach längerer Suche nicht auf die Lösung gekommen. Hier die Fakten:

sshd_config auf Kubuntu:
X11Forwarding yes
AllowTcpForwarding yes
X11DisplayOffset 10

ssh_config auf Fedora:
ForwardX11 yes

Beim Verbindungsversuch wird die DISPLAY-Variable nicht gefunden:

[lxullrich:~]$ ssh -X stefan@pingu23 xterm
stefan@pingu23's password:
xterm Xt error: Can't open display:
xterm: DISPLAY is not set
[lxullrich:~]$

Diese ist wirklich nicht gesetzt:

[lxullrich:~]$ ssh stefan@pingu23
[...]
stefan@Pingu23:~$ echo $DISPLAY

stefan@Pingu23:~$

Bei einer Verbindung vom gleichen client (Fedora) zu einem anderen Host mit funktionierender X-Weiterleitung erhalte ich:

[lxvinetafs:~]$ echo $DISPLAY
localhost:10.0
[lxvinetafs:~]$

Vielleicht wird ja die vom sshd gesetzte DISPLAY-Variable auf der Kubuntu-Server ja von irgendeinem Prozess gelöscht - Kann man vielleicht herausbekommen, wovon?
Allerdings funktioniert auch ein Setzen per Hand nicht:

stefan@Pingu23:~$ export DISPLAY=localhost:10.0
stefan@Pingu23:~$ xterm


An dieser Stelle gibt es keinen Promt, das xterm ist also irgendwo gestartet, kommt aber nicht auf meinem Client an.

Hat jemand eine Idee bei diesem Problem?

Thx, Knollo_de

znoopy
21.08.06, 16:34
hallo,
du musst auf der entfernten maschine in der /etc/sshd_config erstmal XForwarding auf "yes" setzen. Dann sshd neustarten und dich wieder mit ssh -X entfernter_rechner eingloggen.

export display..bla brauchst du dann nicht mehr.

Gruß,
Dennis

Knollo_de
21.08.06, 16:42
Hallo znoppy,

ich habe Deinen Tipp ausprobiert, allerdings ohne Erfolg. In der sshd_config gibt es schon die Zeile 'X11Forwarding yes' und ein Hinzufügen von 'XForwarding yes' ergibt beim Starten von ssh folgenden Fehler:


stefan@Pingu23:/etc/init.d$ sudo ./ssh start
* Starting OpenBSD Secure Shell server... /etc/ssh/sshd_config: line 62: Bad configuration option: XForwarding
/etc/ssh/sshd_config: terminating, 1 bad configuration options
[fail]

Hast Du sonst noch eine Idee?

znoopy
21.08.06, 19:03
ich meinte auch 'X11Forwarding yes'

keine Ahnung woran es noch liegen könnte. Sobald ich das bei mir auf yes setze kann ich mir mit ssh X anwendungen holen.

fladi.at
21.08.06, 20:01
Es kan auch sein, das am Zielhost die `xauth` fehlt. War einmal bei Debian bei mir der Fall.

zyrusthc
21.08.06, 20:08
Hallo

Gib mal auf der Clientmaschine ein:

xhost +servername

Gruss Oli

BedriddenTech
21.08.06, 20:59
xhost +servername Hat rein gar nichts mit SSH zu tun, sondern ist X über's Netzwerk. Das ist nicht verschlüsselt, und es gibt auch keine Paßwortsicherheit. Finger weg, wenn's auch anders geht!

Ich würde dir folgendes vorschlagen:

ssh -X ich@maschine
xterm
Wenn du ihn erstmal die Shell ausführen läßt, wird auch die xauth-Datei gebaut. Ich bin schon einigen Servern begegnet, die das bei einem "ssh -X ich@maschine xterm" nicht getan haben.

HTH,
Tech

Knollo_de
22.08.06, 08:06
Hallo!

Danke für die Tipps, allerdings bis jetzt ohne Erfolg. Mit dem xhost habe ich das nicht ausprobiert, da ich mich mit der Clientmaschine zu einem anderen Server ohne Probleme verbinden kann - das Problem ist wohl eher auf dem Server zu suchen. Außerdem hat das ja wie im post von BedriddenTech gesagt nichts mit ssh zu tun.

Wenn ich erst die Verbindung über ssh aufmachen und dann ein terminal (oder ein anderes X-Prog) öffne, passiert folgendes:


ssh -X stefan@pingu23
stefan@pingu23's password:
[...]
stefan@Pingu23:~$ xterm
xterm Xt error: Can't open display:
xterm: DISPLAY is not set
stefan@Pingu23:~$

Ich habe weiterhin keine Ahnung, was hier vor sich geht. Hat jemand eine Idee?

Harry
22.08.06, 08:38
Hi Knollo_de,

hast Du mal getestet, ob das "ssh -X ..." mit einem anderen Zieluser auf dem SSH-Server vernünftig funktioniert?
Die Einstellungen des Servers scheinen korrekt zu sein; ich könnte mir evtl. vorstellen, dass ein Login-Skript des Users "stefan" auf der Zielmaschine die Umgebungsvariable DISPLAY löscht oder deren Inhalt.

@BedriddenTech: Die xauth-Datei (~/.Xauthority) wird nicht auf dem Server nach einem "ssh -X ..."-Login gebaut. Wozu auch? Die X-Session wird ja auch über den SSH-Tunnel auf den lokalen Client weitergeleitet und dort quasi lokal vom SSH-Client an den X-Server übergeben. Da der SSH-Client eh unter dem bereits authentifizierten User am X-Server läuft, der die lokale .Xauthority auswertet, ist doch eh alles in Butter :D

Harry

Knollo_de
22.08.06, 10:33
Hallo Harry,

danke für die Hilfe, allerdings kann ich auch unter einem frisch angelegten user keine X-Verbindung über ssh zustande bringen. Es gibt genau den gleichen Fehler:



[lxullrich:~]$ ssh stefan_01@pingu23
stefan_01@pingu23's password:
[...]
stefan_01@Pingu23:~$ xterm
xterm Xt error: Can't open display:
xterm: DISPLAY is not set
stefan_01@Pingu23:~$

Ich hatte ja auch schon vermutet, dass irgendein Script die Variable umsetzt. Also habe ich mal danach gesucht:



stefan@Pingu23:~$ find . -type f -name ".*" -exec grep -l DISPLAY {} \;
./.bash_history
./.xsession
stefan@Pingu23:~$

in der .xsession sieht es bei mir so aus:



[lxullrich:~]$ grep DISPLAY xsession
__DISPLAY="$DISPLAY" # The DISPLAY set by xdm for this session
readonly __HOME __DISPLAY __XAUTHORITY
DISPLAY="$__DISPLAY"
[lxullrich:~]$

Aber das dürfte auch nicht dafür verantwortlich sein, dass es nicht klappt. Hat jemand noch eine andere Idee?

nunja
22.08.06, 10:44
Nunja, vielleicht hilft dieser Artikel etwas weiter http://www.oreillynet.com/linux/blog/2006/08/problems_forwarding_x_over_ssh.html?CMP=OTC-0O724Z062301&ATT=Problems+forwarding+X+over+SSH

Knollo_de
22.08.06, 10:50
Nunja, danke für den Tipp!

Allerdings war ich bereits vorher auf dieser Seite gelandet und habe auch das TCPForwarding eingeschaltet:


sshd_config auf Kubuntu:
X11Forwarding yes
AllowTcpForwarding yes
X11DisplayOffset 10

Daran lag es also nicht ... Trotzdem Danke. Vielleicht hat noch jemand eine andere Idee?

Harry
22.08.06, 11:24
Hi Knollo_de,

zwei Dinge hätte ich jetzt noch direkt parat, die Du prüfen könntest:
1. Die globalen Konfigurationsdateien der Login-Shell unter /etc (profile, bash.bashrc, evtl. auch andere), die möglicherweise die DISPLAY-Variable verändern.
2. Die PAM-Konfiguration des sshd unter /etc/pam.d/sshd. Evtl. wird hier ein PAM-Modul genutzt, welches Änderungen an der DISPLAY-Variable durchführt.

Harry

Harry
22.08.06, 11:27
Und noch ein Nachtrag: Prüfst Du bitte vor dem SSH-Login, ob für den User auf dem SSH-Client die DISPLAY-Variable gesetzt ist? Nicht dass hier schon die Ursache liegt und wir umsonst im dunkeln stochern ;) Poste doch einfach die Ausgabe von
echo $DISPLAY; ssh -X stefan@pingu23 'echo $DISPLAY' Harry

Knollo_de
22.08.06, 13:59
Hallo Harry,

danke für die Tipps. Vielleicht ist es ja irgendein Skript unter /etc, welches die DISPLAY-Variable setzt. Dann müsste es hier auftauchen:


stefan@Pingu23:/etc$ sudo find . -type f -name "*" -exec grep -l DISPLAY {} \;
./default/hotplug
./security/pam_env.conf
./init.d/kdm
./hotplug/pci.rc
./hotplug/hotplug.functions
./acpi/hibernate.sh
./acpi/lid.sh
./acpi/power.sh
./acpi/resume.sh
./acpi/screenblank.sh
./acpi/sleep.sh
./X11/Xsession
./X11/app-defaults/GV
./mailcap
./mc/mc.ext
./kde3/kdm/Xreset
./kde3/kdm/Xstartup
stefan@Pingu23:/etc$

Wo schaue ich da am besten nach? Kann man auch irgendwie das ganze per Hand setzen, um sich dem Problem zu nähern? Das hatte ja bei mir auch nicht geklappt.

Hier nochmal die Ausgabe der lokalen DISPLAY-Variable auf dem client:


[lxullrich:~]$ echo $DISPLAY; ssh -X stefan@pingu23 'echo $DISPLAY'
:0.0
stefan@pingu23's password:

[lxullrich:~]$


:confused: grübel, grübel, woran liegt das bloß?:confused:

smartysmart34
11.10.06, 20:28
Hallo zusammen,

ich versuche das gerade analog.
Problem: auf dem lokalen rechner ist Display 0.0
Nach connect auf den remotehost mittels: ssh -X -l soltaum soltaudebian
und echo $DISPLAY: Nix. Leerzeile
Dann in der Shell auf dem Remoterechner: export $DISPLAY=192.168.2.97:0.0
Fehlermeldung: -bash: export: `=192.168.2.97:0.0': not a valid identifier


Wie setze ich denn nun $DISPLAY korrekt, damit die X-verbindung klappt?

Danke und Gruß,
Martin

marce
11.10.06, 20:53
bei export kein $ vor dem Variablennamen...

smartysmart34
11.10.06, 20:57
Mann wie peinlich ;-)

Danke für den Tip.
Nächstes Problem:
Ich führe xterm aus, die shell wartet ohne neuen Prompt. In einer zweiten ssh-session sehe ich unter ps -A auch xterm laufen, aber auf meinem Arbeitsplatz geht kein fenster auf... ???

smartysmart34
12.10.06, 23:29
Hallo nochmal,

ich habe es heute nochmal probiert, nachdem ich unter ~/.ssh eine Datei namens "config" mit folgendem Inhalt angelegt habe:



ForwardX11 yes


Wenn ich mich nun auf den Server per ssh connecte und folgendes eingebe:


soltaum@SoltauDebian:~$ export DISPLAY=192.168.2.97:0.0
soltaum@SoltauDebian:~$ echo $DISPLAY
192.168.2.97:0.0
soltaum@SoltauDebian:~$ xterm


Dann erhalte ich nach einer Weile dennoch:

xterm Xt error: Can't open display: 192.168.2.97:0.0

Woran kann das liegen?

Danke und Gruß,
Martin