ubuntuusers.de

X11 Programm von SSH aus starten

Status: Gelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

Smuddy

Anmeldungsdatum:
5. März 2011

Beiträge: Zähle...

Hi Leute,

vorweg: es geht mir nicht ums X-forewarding von SSH. Ich möchte auf meinem Ubuntu-Server ein Programm per SSH starten, welches auf der grafischen Oberfläche (Gnome2) läuft. der Ansatz ist http://forum.ubuntuusers.de/topic/ein-x-programm-von-der-text-konsole-aus-start

Nur funktioniert das nicht richtig, das Display kann nicht gefunden werden. Wie kann ich rausfinden, wie das aktuelle Display heist, bzw, gibt es einen anderen Weg so einen Programmstart zu bewerkstelligen?

Der Hintergrund ist folgender: Für die Fernwartung nutze ich sowohl SSH, als auch Teamviewer. Nur ist es mir schon manchmal passiert, dass der Teamviewer abgestürzt ist. Und genau den will ich wieder auf der grafischen Oberfläche starten. Sollte das Funktionieren kann ich auch endlich auf xcfe umsteigen ohne erst wieder die ganze Peripherie anzuklemmen.

Grüße Smuddy

epyx

Avatar von epyx

Anmeldungsdatum:
22. März 2007

Beiträge: 48

probier mal die mit dem Rechner via ssh -Y zu verbinden. Das leitet die Xsession an deinen X-Server weiter.

erst lesen, dann antworten. sorry. Was ich aber aus Gründen meines schlechten Gewissen gerade getestet habe :

1
2
3
#!/bin/bash
export DISPLAY=":1.0"
gedit

Das hat mir gerade erfolgreich, gedit in einer VNC-Session auf meinem NAS gestartet. Den Wert für Display hatte ich vorher in der Xsession per

1
echo $DISPLAY 

herausgefischt.

UrbanFlash Team-Icon

Avatar von UrbanFlash

Anmeldungsdatum:
21. Februar 2006

Beiträge: 5549

Wohnort: Wien

Lokal lässt sich das mit 'echo $DISPLAY' rausfinden und vor dem Befehl mit 'DIPLAY=' für das aktuelle Terminal setzen mit 'export DISPLAY=' ist die Einstellung auch für gestartete Programme verfügbar. Siehe Umgebungsvariable

Wenn nur ein Xserver mit einem (auch virtuellen) Schirm verwendet wird, dann ist das eigentlich immer ':0'. Eine zweite Anzeige auf dem selben XServer (Twinview, Clone, etc...) wäre ':0.1', dann ':0.2', usw...

Ein zweiter XServer würde auf :1, bzw :1.1, :1.2, etc. laufen.

Das ganze ist jetzt nach oben ziemlich offen.

Hoffe mal, dass sich jetzt keine Fehler eingeschlichen haben...

Smuddy

(Themenstarter)

Anmeldungsdatum:
5. März 2011

Beiträge: 18

Super, danke,

1
2
xxx@yyy:/$ export DISPLAY=":0.0"
xxx@yyy:/$ gedit

hat funktioniert. ich hatte immer mit :1.0 getestet und das Display wurde nicht gefunden. jetzt klappts.

zumindestens fast:

1
2
3
4
5
xxx@yyy:/$ sudo gedit
No protocol specified
(gedit:5031): Gtk-WARNING **: cannot open display: :0.0
xxx@yyy:/$ sudo export DISPLAY=":0.0"
sudo: export: command not found

funktioniert leider nicht. Wie bekomme ich die Umgebungsvariable für den Superuser exportiert? ist jetzt aber nur nice2have, da der Teamviewer eh nur als normaler User läuft

Grüße Smuddy

epyx

Avatar von epyx

Anmeldungsdatum:
22. März 2007

Beiträge: 48

Probier mal :

1
sudo su -

Dann bekommst du eine root-Shell und nimmst die Umgebungs-Variablen mit.

UrbanFlash Team-Icon

Avatar von UrbanFlash

Anmeldungsdatum:
21. Februar 2006

Beiträge: 5549

Wohnort: Wien

Oder lieber die "richtige" Variante 'sudo -s'

Dann bleibt deine Umgebung erhalten, dh zB dein Home ist immer noch dein Home und nicht /root.

Smuddy

(Themenstarter)

Anmeldungsdatum:
5. März 2011

Beiträge: 18

Also die Variable scheint er zu haben, aber ich bekomme die Meldung, das Display :0.0 nicht zu öffnen ist. Als user funktioniert das, aber weder mit sudo -s noch als su.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
xxx@yyy:/$ google-chrome
Neues Fenster in aktueller Browsersitzung erstellt.
xxx@yyy:/$ sudo -s google-chrome
No protocol specified
(google-chrome:5521): Gtk-WARNING **: cannot open display: :0.0
xxx@yyy:/$ sudo su
root@yyy:/# export DISPLAY=":0.0"
root@yyy:/# google-chrome
No protocol specified
(google-chrome:5550): Gtk-WARNING **: cannot open display: :0.0

So langsam werde ich neugierig. Gibts denn Zugriffsbeschränkungen auf den Xserver?

epyx

Avatar von epyx

Anmeldungsdatum:
22. März 2007

Beiträge: 48

also das liegt an den ACLs des Xservers.

du kannst in einer schon geöffneten Session

1
xhost +localhost

machen und dann zum Root werden. Dann sollte es gehen. Noch extremer wäre

1
xhost +

dann darf sich jeder auf deine Session connecten. Also, alles zusammen :

1
2
3
user@host $ xhost +localhost
user@host $ export DISPLAY=":0.0"
user@host $ sudo -s gedit

UrbanFlash Team-Icon

Avatar von UrbanFlash

Anmeldungsdatum:
21. Februar 2006

Beiträge: 5549

Wohnort: Wien

Ich meinte übrigens 'sudo -s' als Ersatz für 'sudo su -'. Also um eine temporäre Rootshell zu bekommen. Geht so natürlich auch, hat aber gegenüber einem normalen 'sudo xx' keinen Mehrwert.

Smuddy

(Themenstarter)

Anmeldungsdatum:
5. März 2011

Beiträge: 18

Nochmal herzlichen Dank - jetzt klappt es.

Was mich noch wundert: ich hatte als user mehr Rechte als root. Um die benutzer im xhost zu setzten musste ich erst su verlassen.

1
SI:localuser:xxx

epyx

Avatar von epyx

Anmeldungsdatum:
22. März 2007

Beiträge: 48

Das ist auch richtig so. Mit dem grafischen Login bindest du die Xsession an deinen User und per default darf natürlich auch niemand anders darauf zugreifen. Da der grafische Login von root deaktiviert ist und auch bleiben sollte, musst dein User erst genehmigen und hat damit automatisch mehr zu sagen als root.

PS : su - stammt von Redhat und macht dort das Gleiche wie sudo -s, was es dort nicht gibt.

Antworten |