InhaltsverzeichnisX11openSUSE als Terminalserver einrichten
Linux benutzt als grafische Umgebung das X11-Paket. 1. starte YAST2 / System / Editor für /etc/sysconfig-Dateien2. klicke auf Desktop /Displaymanager und ändere folgende Einträge :
DISPLAYMANAGER_REMOTE_ACCESS = yes (prinzipielle Freigabe übers Netz) 3. Auf der Firewall muss der TCP-Port und der UDP-Port 177 freigeschaltet werden.
starte dazu YAST / Sicherheit und Benutzer / Firewall / erlaubte Dienste / zu erlaubender Dienst : Fernzugriff auf Display-Manager <hinzufügen> + <übernehmen> 4. Installiere und aktiviere lightdmXDMCP geht nicht mit sddm, gmd, kdm ! zypper in lightdm update-alternatives --config default-displaymanager 5. Listener konfigurieren in /etc/X11/xdm/Xaccesswenn der Server aus allen Netzen erreichbar sein soll: echo "LISTEN *" >>/etc/X11/xdm/Xaccess 6. Starte den Rechner neu.reboot
Anschließend sollte ein Zugriff mit „X -query meinServer -once“ von einem entfernten Linuxrechner möglich sein. "X :1 -query meinServeroderIP -once "
einen 2.X-server starten. (Konsole8) "Xnest :1 -query meinServeroderIP -once "
Von einem Windowsrechner kann bei installiertem Xming ( download hier ) mit "c:\programme\xming\xming.exe -query meinServeroderIP -once"
die Linuxoberfläche auf den Windowsrechner geholt werden. 5. Fehlerquellen
-die gegenseitige DNS-Namensauflösung zwischen den Rechnern funktioniert nicht. Nur die IP angeben funktioniert wegen reverser DNSauflösung nicht!!! netstat -pan | grep 6000 netstat -pan | grep 177
dies ist zwingend erforderlich!!! Debian als KDE-Terminalserver
Zuerst müssen die benötigten Pakete installiert werden: apt-get install xdm kde
Danach stellen Sie den StandardDisplaymanager in der Datei /usr/bin/xdm
Danach konfigurieren Sie die Zugriffskontrolle auf die Anmeldung in der Datei #alle Rechner haben Zugriff: * #oder nur ein Rechner hat Zugriff meinClient
Danach entscheiden Sie ob der lokale X-Server auch gestartet werden soll und auf Anfragen von außen antworten soll: :0 local /usr/bin/X :0 vt7 -nolisten tcp in :0 local /usr/bin/X :0 vt7
Danach entscheiden Sie, ob der xdm auf auf externe Anfragen per XDMCP-Protokoll reagieren soll: !DisplayManager.requestPort 0
Stoppen Sie den xdm: /etc/init.d/xdm stop
und killen alle eventuell danach noch laufenden xdm und X-Programme: killall xdm;killall X
starten Sie den xdm neu: /etc/init.d/xdm start
oder booten den rechner neu. X -query meinServer oder X -query meinServer :1
Debian als Gnome-Terminalserver
Zuerst müssen die benötigten Pakete installiert werden: apt-get install gdm3
Dann muss der Anmeldebildschirm noch in der Datei [xdmcp] Enable=true Auch soll root sich anmelden können: [security] AllowRemoteRoot=true
In der PAM-Datei #auth required pam_succeed_if.so user != root quiet_success Dann nur noch den Dienst neustarten: /etc/init.d/gdm3 restart Jetzt kann die Anmeldung per X erfolgen: X -query meinServer :1
nur ein einzelnes X-Programm auf einem entfernten Rechner anzeigen
myFirmsrv: ein Linuxserver auf dem ein Programm(myprog) installiert ist, dessen Ausgabe ich aber auf meinen Client holen will. X :1 & xterm -display :1
jetzt gebe ich das X-Display für entfernte Verbindungen frei: xhost +myFirmsrv
dann stelle ich eine ssh-Verbindung zum X-Client (myFirmsrv) her. ssh einUser@myFirmsrv password: (das Passwort dazu) dann setze ich die Displayvariable: export DISPLAY=myFirmcln:1 jetzt starte ich einen minimalen Windowmanager(twm &) und das gewünschte Programm(myprog): twm & #oder startkde & #oder wmstart & myprog
Auf dem (Client-)Display erscheint jetzt die Ausgabe des gestarten Programms. twm -display myFirmcln:1
häufige Fehler
Firewall ist an
Bildschirmschoner und Monitorabdunklung abschalten
Editiere die /etc/X11/xorg.conf. Option "BlankTime" "0" Option "StandbyTime" "0" Option "SuspendTime" "0" Option "OffTime" "0" starte anschließend den X-Server oder den ganzen Rechner neu. Sonstiges
Xterm-Schriftgröße ändern: XTerm*Font: 10x20
Kontextmenü von twm ändern : /usr/share/X11/twm/system.twmrc
zweiten entfernten X-Server starten mit : X -indirect ServeroderIP :1
oder lokal: startx -- :1
VESA-treiber in SUSE benutzen obwohl ein anderer Treiber vom system bevorzugt wird : sax2 -r -m 0=vesa
XMING verdeckt starten: c:\Programme\Xming\Xming.exe -ac -multiwindow -clipboard +kb -xkblayout de -dpi 108 oder: "C:\Program Files (x86)\Xming\Xming.exe" -ac -clipboard -multiwindow +kb -xkblayout de -dpi 108 dann auf dem X-Client: export DISPLAY=entfernterServer:0 twm &
oder besser: c:\Programme\Xming\Xming.exe -ac -multiwindow -clipboard +kb -xkblayout de -dpi 108 c:\Programme\PuTTY\plink.exe -ssh -X username@xclientsrv export DISPLAY=%computername%:0 ; xterm
zwischen den virtuellen Konsolen umschalten chvt 1 zurück auf den X-server schalten: chvt 7
xdg-mime install /opt/Citrix/ICAClient/desktop/Citrix-mime_types.xml update-desktop-database update-mime-database /usr/share/mime Notfications an alle angemeldete Benutzer senden
libnotify-tools(suse oder libnotify-bin(debian) muss installiert sein. sudo -u benutzername DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus notify-send 'Hello world!' 'This is an example notification.' -t 0 oder: gdbus call --session \ --dest=org.freedesktop.Notifications \ --object-path=/org/freedesktop/Notifications \ --method=org.freedesktop.Notifications.Notify \ "" 0 "" 'Hello world!' 'This is an example notification.' \ '[]' '{"urgency": <1>}' 5000 oder: while true; do date=$(date) notify-send "$date" -h string:x-canonical-private-synchronous:my-notification sleep 1 done angemeldete Benutzer abmelden, nicht nur sperrenbusctl call org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager TerminateSession s $(loginctl show-user $UID --property=Sessions --value) oder for i in $(loginctl list-sessions --no-legend | sort -r | awk '{ print $1 }');do loginctl terminate-sessions $i;done alle grafischen Anmeldungen beenden: systemctl --user stop graphical-session.target oder loginctl list-sessions loginctl terminate-session <sessionnummer> alle angemeldete Sessions anzeigen: for i in $(loginctl --no-legend list-sessions | awk '{print $1}');do loginctl show-session -p Name -p Active -p Remote -p Type -p Display "$i";echo '-----';done alle gesperrten Sessions abmelden: for i in $(loginctl list-sessions --no-legend | sort -r | awk '{ print $1 }'); do if [[ $(loginctl show-session -p LockedHint --value $i) == "yes" ]]; then echo "locked Session from $(loginctl show-session -p Name $i) will be closed." loginctl terminate-session $i fi
GDMeinen Benutzer (bspw. doedel) in der grafischen Anmeldung nicht anzeigen
erstelle eine Datei [User] Language= XSession=gnome SystemAccount=true starte anschießend den displaymanager neu: systemctl restart display-manager.service
|