Mengapa saya tidak bisa menjalankan aplikasi Gnome melalui sesi SSH jarak jauh?

9

Masuk ke host jarak jauh menggunakan ssh -X me@host, saya berhasil menjalankan gnome-terminal -e "tail -F /var/log/file" &. Ketika saya logout dan kemudian mencoba hal yang sama pada hari berikutnya, saya mendapatkan ini:

Gagal mendapatkan bus sesi: Gagal terhubung ke soket / tmp / dbus-K99gT9yDjS: Koneksi ditolak Kembali ke mode non-pabrik. Gagal memanggil setan GConf; keluar. Gagal menghubungi server konfigurasi; beberapa kemungkinan penyebabnya adalah Anda harus mengaktifkan jaringan TCP / IP untuk ORBit, atau Anda memiliki kunci NFS yang basi karena sistem crash. Lihat http://projects.gnome.org/gconf/ untuk informasi. (Detail - 1: Gagal mendapatkan koneksi ke sesi: Gagal terhubung ke soket / tmp / dbus-K99gT9yDjS: Koneksi ditolak)

Bagaimana saya menjalankan terminal gnome dalam situasi ini?

jam pasir
sumber
Saya tidak melihat pertanyaan yang diajukan di sini. Anda harus melakukan sesuatu tentang hal itu sebelum posting Anda ditutup.
Agi Hammerthief
Anda mungkin ingin memotong bagian 'solusi' dari pertanyaan Anda dan mengirimkannya sebagai jawaban. Itu perilaku yang bisa diterima.
Agi Hammerthief
Jika Anda masuk ke mesin lain dengan SSH, Anda akan mendapatkan akses shell / terminal. Anda tidak perlu membuka jendela terminal pada mesin itu. Anda dapat menjalankan perintah langsung pada mesin itu dengan mengetiknya ke terminal pada mesin Anda.
Agi Hammerthief
2
Seperti yang dikatakan Nigel Nquande, silakan tekan tombol jawab pertanyaan Anda sendiri, dan salin dan tempel bagian Solusi Anda ke dalam jawabannya. Tidak hanya itu dapat diterima, tetapi juga dianjurkan.
derobert
2
Sementara itu saya telah menghapus solusi dari pertanyaan Anda karena ini bukan pertanyaan. Pertanyaan yang dijawab dengan sendirinya semacam ini lebih dari sekadar disambut, tetapi harap posting jawaban sebagai jawaban . Lihat pusat bantuan kami atau ikuti tur 10 detik untuk informasi lebih lanjut. Anda dapat melihat teks asli (jadi Anda tidak perlu menuliskannya lagi) di histori edit yang bisa Anda dapatkan dengan mengklik tautan "Diedit X mnt lalu".
terdon

Jawaban:

7

Memang ketika sesi SSH terbuka, itu tidak meluncurkan sesi dbus. Beberapa program mungkin meluncurkannya, tetapi kemudian sesi tidak mengetahuinya (karenanya tidak dapat menutupnya).

Tidak mengetahui tentang sesi dbus juga berarti bahwa program yang menggunakan dbus tetapi tidak meluncurkannya sendiri akan mengalami masalah.

bagian dbus adalah per mesin dan per tampilan X11. Info mereka disimpan dalam $ HOME / .dbus / session-bus / - namun, proses yang dirujuk di sana mungkin ditutup, sehingga diperlukan pemeriksaan tambahan untuk menentukan apakah meluncurkan dbus diperlukan atau tidak. Kemudian, variabel-variabel yang ada harus diekspor ke sesi.

Maka itu bekerja seperti pesona :)

Saya menaruh yang berikut ini di file .bash_profile saya:

# 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

catatan: hostnamectl adalah bagian dari systemd dan memungkinkan untuk mengambil mesin-id dbus-launch menampilkan variabel yang kita inginkan; dengan menggunakan export $(dbus-launch)kami mengambil output dari peluncuran-dbus dan mengekspor variabel

Pablo Saratxaga
sumber
5

Tidak ada jawaban sebelumnya yang berfungsi dalam kasus saya, tetapi meluncurkan aplikasi melalui dbus-launch berhasil:

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

Aku menemukan ini:

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

Yang membuat saya mencoba ini:

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

Sekarang saya bisa menjalankan gnome-terminal!

jam pasir
sumber
2
Cukup luar biasa, itu bekerja juga di 16.04. Saya hanya perlu mengubah perintah restart ke sudo service dbus restart. Terima kasih!
Avio
⚠️ Peringatan: memulai ulang dbus mungkin akan memulai kembali seluruh sesi X Anda
Adam Katz
1

Lari saja:

> dbus-launch gnome-terminal
Ari
sumber
1
Mengapa ini bisa membantu?
DarkHeart
1
Ini juga bekerja untuk saya. Saya tidak tahu kenapa.
Robert Lugg
0

Menarik ... hanya me-restart dbus tidak bekerja untuk saya, saya juga harus menghapus file mesin-id serta restart.

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

Ini ada di server SLES 11.4 yang baru-baru ini saya kloning di VMWare. Masalah saya adalah saya tidak dapat memulai yast2 atau gedit ...

Ini adalah kesalahan yang saya lihat di baris perintah:

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] 

Terima kasih atas tipnya!

Ernie
sumber
-2

Coba ini:

rm $HOME/.dbus/session-bus/*
Ishak
sumber