Warum kann ich Gnome-Apps nicht über eine Remote-SSH-Sitzung ausführen?

9

Wenn ssh -X me@hostich mich mit bei einem Remote-Host anmelde , werde ich erfolgreich ausgeführt gnome-terminal -e "tail -F /var/log/file" &. Wenn ich mich abmelde und am nächsten Tag dasselbe versuche, erhalte ich Folgendes:

Fehler beim Abrufen des Sitzungsbusses: Fehler beim Herstellen einer Verbindung zu Socket / tmp / dbus-K99gT9yDjS: Verbindung abgelehnt. Zurückfallen auf den nicht werkseitigen Modus. Der GConf-Dämon konnte nicht beschworen werden. verlassen. Kontakt zum Konfigurationsserver fehlgeschlagen; Einige mögliche Ursachen sind, dass Sie das TCP / IP-Netzwerk für ORBit aktivieren müssen oder dass Sie aufgrund eines Systemabsturzes veraltete NFS-Sperren haben. Weitere Informationen finden Sie unter http://projects.gnome.org/gconf/ . (Details - 1: Verbindung zur Sitzung konnte nicht hergestellt werden: Verbindung zu Socket / tmp / dbus-K99gT9yDjS fehlgeschlagen: Verbindung abgelehnt)

Wie starte ich in dieser Situation das Gnome-Terminal?

Hourback
quelle
Ich sehe hier keine Frage. Sie sollten etwas dagegen tun, bevor Ihr Beitrag geschlossen wird.
Agi Hammerthief
Möglicherweise möchten Sie den Teil "Lösung" aus Ihrer Frage herausschneiden und als Antwort einreichen. Das ist akzeptables Verhalten.
Agi Hammerthief
Wenn Sie sich mit SSH bei einem anderen Computer anmelden, erhalten Sie Shell- / Terminalzugriff. Sie müssen auf diesem Computer kein Terminalfenster öffnen. Sie können Befehle direkt auf diesem Computer ausführen, indem Sie sie in das Terminal Ihres Computers eingeben.
Agi Hammerthief
2
Wie Nigel Nquande sagt, drücken Sie bitte die Schaltfläche zum Beantworten Ihrer eigenen Frage und kopieren Sie Ihren Lösungsabschnitt und fügen Sie ihn in die Antwort ein. Es ist nicht nur akzeptabel, es wird auch gefördert.
Derobert
2
In der Zwischenzeit habe ich die Lösung aus Ihrer Frage entfernt, da es sich nicht um eine Frage handelt. Diese Art von selbst beantworteten Fragen ist mehr als willkommen, aber bitte posten Sie Antworten als Antworten . Schauen Sie sich unsere Hilfe an oder nehmen Sie an der 10-Sekunden- Tour teil, um weitere Informationen zu erhalten. Sie können den Originaltext im Bearbeitungsverlauf sehen (Sie müssen ihn also nicht erneut ausschreiben ) , indem Sie auf den Link "Vor x Minuten bearbeitet" klicken.
Terdon

Antworten:

7

Wenn eine SSH-Sitzung geöffnet ist, wird keine dbus-Sitzung gestartet. Einige Programme starten es möglicherweise, aber dann weiß die Sitzung nichts davon (kann es daher nicht schließen).

Wenn Sie die dbus-Sitzung nicht kennen, bedeutet dies auch, dass Programme, die dbus verwenden, es aber nicht selbst starten, Probleme haben.

dbus-Abschnitte sind pro Maschine und pro X11-Anzeige. Ihre Informationen werden in $ HOME / .dbus / session-bus / gespeichert. Der dort angegebene Prozess kann jedoch geschlossen sein. Daher ist eine zusätzliche Überprüfung erforderlich, um festzustellen, ob das Starten von dbus erforderlich ist oder nicht. Anschließend sollen die dortigen Variablen in die Sitzung exportiert werden.

Dann funktioniert es wie ein Zauber :)

Ich habe Folgendes in meine .bash_profile-Datei eingefügt:

# set dbus for remote SSH connections
if [ -n "$SSH_CLIENT" -a -n "$DISPLAY" ]; then
    machine_id=$(LANGUAGE=C hostnamectl|grep 'Machine ID:'| sed 's/^.*: //')
    x_display=$(echo $DISPLAY|sed 's/^.*:\([0-9]\+\)\(\.[0-9]\+\)*$/\1/')
    dbus_session_file="$HOME/.dbus/session-bus/${machine_id}-${x_display}"
    if [ -r "$dbus_session_file" ]; then
            export $(grep '^DBUS.*=' "$dbus_session_file")
            # check if PID still running, if not launch dbus
            ps $DBUS_SESSION_BUS_PID | tail -1 | grep dbus-daemon >& /dev/null
            [ "$?" != "0" ] && export $(dbus-launch) >& /dev/null
    else
            export $(dbus-launch) >& /dev/null
    fi
fi

Anmerkungen: hostnamectl ist Teil von systemd und ermöglicht das Abrufen der Maschinen-ID. Der dbus-Start zeigt die gewünschten Variablen an. Mit using export $(dbus-launch)rufen wir die Ausgabe von dbus-launch ab und exportieren die Variablen

Pablo Saratxaga
quelle
5

Keine der vorherigen Antworten hat in meinem Fall funktioniert, aber das Starten der Anwendung über dbus-launch hat die Aufgabe erfüllt:

ssh myhost "dbus-launch gnome-terminal --display localhost:10.0 &"
Sabst
quelle
3

Ich habe das gefunden:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=639261

Was mich dazu brachte, dies zu versuchen:

$ sudo rm /var/lib/dbus/machine-id
$ sudo service messagebus restart

Jetzt kann ich gnome-terminal laufen lassen!

Hourback
quelle
2
Unglaublicherweise funktionierte es auch im 16.04. Ich musste nur den Neustartbefehl in ändern sudo service dbus restart. Vielen Dank!
Avio
⚠️ Warnung: Wenn Sie dbus neu starten, wird wahrscheinlich Ihre gesamte X-Sitzung neu gestartet
Adam Katz
1

Lauf einfach:

> dbus-launch gnome-terminal
Ari
quelle
1
Warum sollte das helfen?
DarkHeart
1
Das hat auch bei mir funktioniert. Ich habe keine Idee warum.
Robert Lugg
0

Interessant ... nur ein Neustart von dbus hat bei mir nicht funktioniert, ich musste auch die Maschinen-ID-Datei entfernen und neu starten.

$ rcdbus stop
$ rm /var/lib/dbus/machine-id
$ rcdbus start

Dies war auf einem SLES 11.4-Server, den ich kürzlich in VMWare geklont hatte. Mein Problem war, dass ich yast2 oder gedit nicht starten konnte ...

Dies waren die Fehler, die ich in der Befehlszeile sah:

yast2

** (y2controlcenter-gnome:9981): WARNING **: error accessing /desktop/gnome/lockdown/disable_command_line [Failed to contact configuration server; some possible causes are that you need to enable TCP/IP networking for ORBit, or you have stale NFS locks due to a system crash. See http://projects.gnome.org/gconf/ for information. (Details -  1: Failed to get connection to session: Failed to connect to socket /tmp/dbus-W7H31tbhVY: Connection refused)]


** (y2controlcenter-gnome:9981): WARNING **:
GError raised: [Failed to contact configuration server; some possible causes are that you need to enable TCP/IP networking for ORBit, or you have stale NFS locks due to a system crash. See http://projects.gnome.org/gconf/ for information. (Details -  1: Failed to get connection to session: Failed to connect to socket /tmp/dbus-W7H31tbhVY: Connection refused)]

user_message: [libslab_get_gconf_value: error getting /desktop/gnome/applications/main-menu/lock-down/user_modifiable_apps] 

Danke für den Tipp!

Ernie
quelle
-2

Versuche dies:

rm $HOME/.dbus/session-bus/*
Isaac
quelle