web-dev-qa-db-ja.com

リモートSSHセッションでGnomeアプリを実行できないのはなぜですか?

ssh -X me@Hostを使用してリモートホストにログインすると、gnome-terminal -e "tail -F /var/log/file" &を正常に実行できます。ログオフして翌日同じことを試すと、次のようになります。

セッションバスの取得に失敗しました:ソケット/ tmp/dbus-K99gT9yDjSへの接続に失敗しました:接続が拒否されました非ファクトリーモードへのフォールバックGConfデーモンの呼び出しに失敗しました。終了します。構成サーバーに接続できませんでした。考えられる原因としては、ORBitに対してTCP/IPネットワークを有効にする必要があるか、システムクラッシュが原因で古いNFSロックが使用されていることが考えられます。詳細は http://projects.gnome.org/gconf/ を参照してください。 (詳細-1:セッションへの接続の取得に失敗しました:ソケット/ tmp/dbus-K99gT9yDjSへの接続に失敗しました:接続が拒否されました)

この状況でgnome-terminalを実行するにはどうすればよいですか?

9
hourback

私はこれを見つけました:

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

これを試してみました:

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

これでgnome-terminalを実行できます!

3
hourback

実際、SSHセッションが開いているときは、dbusセッションは起動しません。一部のプログラムはそれを起動する可能性がありますが、セッションはそれを認識しません(したがって、それを閉じることができません)。

Dbusセッションについて知らないことは、dbusを使用するがそれ自体を起動しないプログラムで問題が発生することも意味します。

dbusセクションは、マシンごとおよびX11ディスプレイごとです。それらの情報は$ HOME/.dbus/session-bus /-に保存されますが、そこで参照されているプロセスが閉じている可能性があるため、dbusの起動が必要かどうかを判断するには、追加のチェックが必要です。次に、そこにある変数をセッションにエクスポートします。

それからそれは魅力のように働きます:)

以下を.bash_profileファイルに入れます:

_# 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
_

注:hostnamectlはsystemdの一部であり、dbus-launchが必要な変数を表示するマシンIDを取得できます。 export $(dbus-launch)を使用して、dbus-launchの出力を取得し、変数をエクスポートします

7
Pablo Saratxaga

以前の回答はどれも私の場合はうまくいきませんでしたが、dbus-launchを介してアプリケーションを起動するとうまくいきました。

ssh myhost "dbus-launch gnome-terminal --display localhost:10.0 &"
5
sabst

とにかく走れ:

> dbus-launch gnome-terminal
1
Ari

興味深い... dbusを再起動するだけでは機能しませんでした。また、machine-idファイルを削除して再起動する必要がありました。

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

これは、最近VMWareにクローンを作成したSLES 11.4サーバー上にありました。私の問題は、yast2またはgeditを開始できないことでした...

これらは私がコマンドラインで見たエラーでした:

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] 

先端をありがとう!

0
Ernie