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


9

を使用してリモートホストにログインすると、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を実行するにはどうすればよいですか?


ここで質問が表示されません。投稿がクローズされる前に、それについて何かする必要があります。
Agi Hammerthief 2014年

質問から「解決策」の部分を切り取り、回答として送信することもできます。それは許容できる動作です。
阿木Hammerthief

SSHを使用して別のマシンにログインしている場合は、シェル/ターミナルアクセスを取得します。そのマシンでターミナルウィンドウを開く必要はありません。マシンのターミナルにコマンドを入力して、そのマシンで直接コマンドを実行できます。
Agi Hammerthief 2014年

2
Nigel Nquandeが言うように、あなた自身の質問ボタンに答えて、ソリューションセクションをコピーして答えに貼り付けてください。受け入れられるだけでなく、推奨されます。
derobert 2014年

2
それまでの間、問題は解決されていないため、私はあなたの質問からソリューションを削除しました。自己回答質問のこの種のは歓迎以上ですが、としてポスト答えてください答えを。詳しくはヘルプセンターをご覧いただくか、10秒のツアーをご覧ください。[X分前に編集済み]リンクをクリックすると表示される編集履歴で、元のテキストを確認できます(書き直す必要はありません)。
terdon

回答:


7

実際、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の出力を取得し、変数をエクスポートします


5

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

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

3

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

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

これを試してみました:

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

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


2
信じられないほど十分に、それは16.04でも機能しました。私は再起動コマンドをに変更する必要がありましたsudo service dbus restart。ありがとう!
Avioの

⚠️警告:dbusを再起動すると、おそらくXセッション全体が再起動します
Adam Katz


0

興味深い... 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] 

先端をありがとう!


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.