staging.inyokaproject.org

DISPLAY geöffnet von anderem PC aber X-Forwarding verweigert

Status: Ungelöst | Ubuntu-Version: Xubuntu 20.04 (Focal Fossa)
Antworten |

egerlach

Anmeldungsdatum:
23. Januar 2009

Beiträge: 318

Hallo, es soll "xeyes" auf der grafischen Xbuntu-Sitzung eines zweiten xubuntu-PCs erscheinen, vielmehr auf einem per RDP von Windows gestarten Sitzung. Das geht mit dem folgenden leider (noch) nicht:

# export DISPLAY=10.0.0.9:10.0 

sshd_config:
AllowTcpForwarding yes
X11Forwarding yes

# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
# cat /proc/sys/net/ipv4/ip_forward
1

lightdm.conf
xserver-allow-tcp = True   (danach Neustart lightdm durch kill)

Von der anderen Maschine 10.0.0.104 aus:

# export DISPLAY=10.0.0.9:10.0
# xeyes
Error: Can't open display: 10.0.0.9:10.0
#

sshd wurde neu gestartet per "systemctl restart sshd". Am xubuntu-User-Server 10.0.0.9 selbst geht es einwandfrei mit einem export DISPLAY=10.0.0.9:10.0 (oder kurz export DISPLAY=:10.0). "xhost +" wurde natürlich auf dem Ziel-Display gemacht.

Was fehlt noch? Warum wird X11-Forwarding von 10.0.0.104 auf 10.0.0.9 verweigert?

Danke schon mal Eckard

Moderiert von kB:

Aus dem Forum „Netzwerk und Internetzugang einrichten“ in einen besser passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) im jeweiligen Forum! Danke.

von.wert

Anmeldungsdatum:
23. Dezember 2020

Beiträge: 12281

XFocal ist seit über 10 Monaten End of Support.

egerlach

(Themenstarter)

Anmeldungsdatum:
23. Januar 2009

Beiträge: 318

Die 20.04 wurde vor 3 Wochen auf einem Business-System installiert, davor war es scientific-Linux 6.3 , mittlerweile 16 Jahre alt. Du meinst es geht mit 22.04 besser? - Könnte ich bei mir hier mal testen. Sicherlich das gleiche.

Wüsstest Du die Lösung wenn ich 22.04 angegeben hätte?

ubuntu ist richtig gut "verrammelt", das mag Home-User und Admins begeistern, im Business hat daher aus gutem Grund Windows die Nase vorn.

wxpte

Anmeldungsdatum:
20. Januar 2007

Beiträge: 1388

egerlach schrieb:

ubuntu ist richtig gut "verrammelt", das mag Home-User und Admins begeistern, im Business hat daher aus gutem Grund Windows die Nase vorn.

Schon seit 15 Jahren angemeldet – und noch immer weißt du so rein gar nichts über diese Community. Viele von denen, die hier supporten, nutzen Ubuntu nicht einmal selbst produktiv. Wen, bitteschön, willst du also mit solchen Aussagen beeindrucken? Ernsthaft!

egerlach

(Themenstarter)

Anmeldungsdatum:
23. Januar 2009

Beiträge: 318

von.wert schrieb:

XFocal ist seit über 10 Monaten End of Support.

??? hast Du Dich vertan ? https://wiki.ubuntu.com/Releases "Ubuntu 20.04 LTS Focal Fossa, which is supported until April, 2025"

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Die 5 Jahre LTS-Support gelten nur für Ubuntu Desktop und Ubuntu Server, nicht für Xubuntu (da sind es nur drei Jahre: https://xubuntu.org/releases/) - über die Relevanz kann man sich streiten.

Aber zurück zum eigentlichen Problem: wie genau setzt du das SSH-Tunneling um?

Ich habe mal folgendes ausprobiert:

Transitrechner "A" hat diese Einstellungen in der sshd_config:

AllowTcpForwarding yes
GatewayPorts clientspecified

Rechner "B", auf dem der xorg-Client laufen soll:

X11Forwarding yes

Dann eine Verbindung über A hergestellt, die den Port 22 auf B lokal verfügbar macht:

ssh -L 9999:B:22 A

Und dann kann ich in einem zweiten Terminal eine Verbindung herstellen:

ssh -C -X -p 9999 localhost xeyes

In der SSH-Sitzung ist DISPLAY bereits passend gesetzt und xeyes wird gestartet.

egerlach

(Themenstarter)

Anmeldungsdatum:
23. Januar 2009

Beiträge: 318

es fehlt vermutlich etwas mit auth, .Xautority. Die entfernte Maschine 10.0.0.104 muss autorisiert werden. wer weiss weiter?

Oder das -auth ... aus dem Xorg-Aufruf rausnehmen:

/usr/lib/xorg/Xorg -listen tcp :0 -seat seat0 -auth /var/run/lightdm/root/:0 -listen tcp vt7 -novtswitch

Port 6000 ist übringens offen, auch von der zweiten maschine aus, mit telnet 10.0.0.9 6000 geprüft, sieht man auch unter netstat -an

egerlach

(Themenstarter)

Anmeldungsdatum:
23. Januar 2009

Beiträge: 318

seahawk1986 schrieb:

Und dann kann ich in einem zweiten Terminal eine Verbindung herstellen:

ssh -C -X -p 9999 localhost xeyes

In der SSH-Sitzung ist DISPLAY bereits passend gesetzt und xeyes wird gestartet.

Danke für Deinen Einsatz und Test für mich. In meinem Fall will der User nicht xeyes auf seinen Desktop holen, sondern jemand anderes schickt ihm die xeyes unaufgefordert auf seinen Desktop. Genauer erklärt habe ich ein Kommunikationssystem mit Kurzinfos, mit dem Mitarbeiter von Arztpraxen miteinander kommunizieren, diese Kurznachrichten werden eben nicht vom User angefordert sondern die bekommt dieser naturgemäßt "plötzlich" und ohne dass dieser eine Nachricht angefordert hat, auf seinen Desktop gesendet, ob dieser will oder nicht. Ich brauche also die andere Richtung! Da ist noch was "verrammelt" bei ubuntu, bei älteren Linux-Distributionen, hat Öffnung Port 6000, abgeschaltete Firewall überall und ein xhost + gereicht, um auch von einer zweiten Maschine diese Nachrichten (testweise xeyes) zu senden, nicht nur lokal von der gleichen Maschine. Jetzt nicht mehr.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

egerlach schrieb:

Danke für Deinen Einsatz und Test für mich. In meinem Fall will der User nicht xeyes auf seinen Desktop holen, sondern jemand anderes schickt ihm die xeyes unaufgefordert auf seinen Desktop.

Die Verbindung kann ja der Rechner initiieren, der eine Software auf einem entfernten Rechner anzeigen will - ist halt etwas mehr Aufwand als nur eine DISPLAY-Umgebungsvariable zu setzen.

Genauer erklärt habe ich ein Kommunikationssystem mit Kurzinfos, mit dem Mitarbeiter von Arztpraxen miteinander kommunizieren, diese Kurznachrichten werden eben nicht vom User angefordert sondern die bekommt dieser naturgemäßt "plötzlich" und ohne dass dieser eine Nachricht angefordert hat, auf seinen Desktop gesendet, ob dieser will oder nicht. Ich brauche also die andere Richtung! Da ist noch was "verrammelt" bei ubuntu, bei älteren Linux-Distributionen, hat Öffnung Port 6000, abgeschaltete Firewall überall und ein xhost + gereicht, um auch von einer zweiten Maschine diese Nachrichten (testweise xeyes) zu senden, nicht nur lokal von der gleichen Maschine. Jetzt nicht mehr.

Wie flexibel bist du da beim Auslesen der Benachrichtigungen aus der Software und der Anzeige selbiger? Nachdem jeder Linux-Desktop mit einem Benachrichtigungsdienst ausgestattet ist, könnte man den Nutzen um eigene Nachrichten auszugeben - z.B. mit notify-send - also z.B. in der einfachsten Form ohne den Sprung über einen Zwischenrechner (wenn man weiß, welcher User eingeloggt ist und als dieser User Zugriff über SSH hat):

ssh user@system 'notify-send -i /usr/share/icons/HighContrast/48x48/status/dialog-warning.png "Warnung" "Dies ist ein sehr wichtiger Hinweis!"' 

Da der Notification Service immer im Kontext der User-Session läuft, könnte man sich einen kleinen Helfer basteln, der die Nachrichten an die eingeloggten Nutzer schickt (benötigt root-Rechte): https://unix.stackexchange.com/a/307097

Wenn man unbedingt X übers Netzwerk will, aber an den Sicherungsmaßnahmen des X-Server scheitert, könnte man auch über socat gehen (das hat den Vorteil, dass man den Zugriff auf localhost beschränken und dann über den SSH-Tunnel gehen kann): https://github.com/mviereck/x11docker/wiki/How-to-access-X-over-TCP-IP-network#socat-tcpip-setup

Also z.B. sowas in den Autostart der Desktop-Session packen (ggf. will man noch per bind= Direktive einschränken, von wo socat Verbindungen akzeptiert):

#!/bin/sh
xhost +
Displaynumber=111
socat TCP-LISTEN:$((6000+Displaynumber)),fork UNIX-CONNECT:/tmp/.X11-unix/X$(grep -Po "(?<=:)\d+" <<< "$DISPLAY") 

Dann die reverse SSH-Verbindung vom Rechner mit der Software zum Zielsystem "B" über "A" als Zwischenstation aufbauen und den Port weiterleiten:

ssh -N -R 6111:B:6111 A 

Und schon kannst du graphische Anwendungen mit DISPLAY=:111 LIBGL_ALWAYS_SOFTWARE=1 als Umgebungsvariablen starten, die dann auf Rechner B erscheinen.

egerlach

(Themenstarter)

Anmeldungsdatum:
23. Januar 2009

Beiträge: 318

Danke, danke für Deine Ideen!! Wenn das so kompliziert ist und Du damit auch indirekt selbst zugibst, dass ubuntu einfach "dicht" ist, dann "stirbt" für mich ein für allemal Linux als Anzeigedesktop. Windows ist wesentlich flexibler, vcxsrv und geht! Bei dem Home-Arbeitsplatz jetzt muss ich mit dem ohnehin für Einwahl mit putty nur noch einen weiteren (Revers-)tunnel über 2 Maschinen schalten, dann sende ich direkt an Windows mit seinem geöffnene ☺ X-Server vcxsrv. Als Linux-begeisterter Mensch dachte ich mir, dass es auch mit Linux geht wie bisher mit älteren Distributionen meiner Kunden. Scheinbar nein, da haben die Puristen von X.org sich mal so richtig ins Zeug gelegt, Linux so richtig gut zu vernageln 🤣

Antworten |