mengapa tampilan x11 tidak berfungsi melalui login ssh?

22

Saya telah masuk ke server jarak jauh dan saya mencoba menampilkan aplikasi x (mis. Firefox). tetapi pesan kesalahan muncul. di bawah ini adalah upaya saya untuk membuka firefox

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

Saya menggunakan -X, -Y karena saya membaca di suatu tempat bahwa dua opsi ini terkait dengan kredensial mengenai X11 dan switch ini akan melakukan pekerjaan untuk saya. Bahkan tanpa tombol -X, -Y, usaha saya gagal.

Apa yang dimaksud dengan kesalahan 'tidak ada tampilan yang diisyaratkan'?

PS Yang aneh adalah bahwa jika saya terhubung ke server jauh melalui PUTTY saya dan ulangi perintah 'firefox' itu berfungsi?!?! (Firefox ditampilkan di komputer lokal)

PS komputer lokal saya adalah Windows 7 sehingga saya menjalankan Xming di latar belakang untuk memungkinkan tampilan X11. Adapun upaya yang ditulis di bagian atas, perintah itu diketik di terminal Cygwin.

kwagjj
sumber
Sudahkah Anda mencoba menampilkan sesuatu secara lokal dari terminal Cygwin Anda? Misalnya, Anda bisa menemukan utilitas X lokal seperti xclock dan menjalankannya untuk melihat apa yang terjadi. Jika Anda tidak dapat menampilkan secara lokal, tampilan jarak jauh tidak akan berfungsi. Anda juga mungkin memerlukan server X untuk Cygwin.
unxnut
1
@ unxnut seperti yang Anda tunjukkan, DISPLAYvariabel saya tidak disetel. jadi saya mengaturnya dengan export DISPLAY=:0.0' and executed xclock` dan xclock muncul. Tetapi ketika saya kemudian login ke server jauh melalui ssh, dan mencoba xclocklagi, katanyaError: Can't open display:
kwagjj

Jawaban:

16

Pastikan Anda memiliki set variabel DISPLAY di lingkungan cygwin Anda:

export DISPLAY=:0.0

setelah terhubung dengan SSH, periksa apakah shell itu juga mengetahui variabel DISPLAY yang benar dengan:

echo $DISPLAY
jensd
sumber
4
Saya mengatur variabel DISPLAY di terminal cygwin komputer lokal dan kemudian ssh'ed ke server jauh dan mengetik echo $DISPLAY. Tapi masih variabel DISPLAY di server jauh diatur ke apa-apa ..
kwagjj
2
Error: Can't open display: :0.0
Ahmed
2
Lakukan ini:export DISPLAY=localhost:0
trogne
18

Saya baru saja mengalami masalah ini menghubungkan ke server RHEL7 tanpa kepala.

Anda perlu paket xorg-x11-xauth diinstal pada host Anda agar variabel DISPLAY dapat diatur, dan harus diotorisasi dengan benar.

Semoga saya menyelamatkan seseorang waktu.

Mike S
sumber
3
persis apa yang saya cari. Sangat dihargai!
josh-cain
1
Jawaban bagus! Solusi lain (mengatur DISPLAY secara manual melalui ekspor) akan menghasilkan transmisi yang tidak terenkripsi antara klien dan server! Pada Debian Squeeze, paket "xauth" yang perlu diinstal untuk membuat semuanya berfungsi. Setelah re-login per ssh -Xsatu echo $DISPLAYkembali URL + pelabuhan dan panggilan dari xterm &membuka terminal di jendela lokal.
Jpsy
7

Terima kasih kepada @jensd, @unxnut karena telah membantu saya. berdasarkan komentar Anda, saya bisa mengetahui masalahnya.

Solusinya membutuhkan dua langkah:

  1. variabel DISPLAY harus diatur dengan benar.
  2. saat ssh'ing ke server jauh, sakelar -X harus menyala

usaha saya sebelumnya kekurangan satu atau kedua kondisi ini.

Bagaimanapun, untuk pengguna kemudian yang melihat ini, ini adalah contoh untuk menunjukkan kepada Anda apa yang ingin saya katakan.

kasus 1

mesin lokal saya tidak akan memiliki set variabel DISPLAY. Dan kemudian saya akan ssh ke server jauh dengan -X switch dan kemudian coba jalankan xclock.

Black@Black-PC ~
$ echo $DISPLAY

## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.

karena Anda dapat melihat kesalahan Error: Can't open display:ditampilkan di terminal server jarak jauh.

case2

kali ini, di mesin lokal, saya akan menentukan variabel DISPLAY. Tetapi ketika saya ssh'ing, saya tidak akan menyalakan saklar -X. Hasilnya akan gagal:

Black@Black-PC ~
$ export DISPLAY=:0.0

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$ 

di awal Anda dapat melihat bahwa saya telah mengatur variabel DISPLAY dengan benar. Namun demikian, setelah ssh'ing (tanpa saklar -X) xclock tidak dijalankan.

* Hasil yang berbeda dengan setenv | grep DISPLAYdapat dilihat di sini (bandingkan dengan case1). dalam case2, hasilnya kosong. di sisi lain, hasil case1 ke baris perintah ini adalah DISPLAY: undefined variable.... Saya tidak yakin bagaimana perbedaan ini disebabkan tetapi saya mendapatkan firasat yang terkait dengan apakah Anda telah memenuhi salah satu syarat 1. atau 2 .

case3

kali ini, saya akan secara tepat menentukan variabel DISPLAY di mesin lokal dan juga ssh ke server jauh dengan -X saya aktif.

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from 
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$

dengan pengaturan ini, xclockberfungsi !! inilah tangkapan layar untuk membuktikan bahwa saya tidak berbohong. masukkan deskripsi gambar di sini xclock berhasil ditampilkan di mesin lokal saya.

Sekali lagi, periksa hasil setenv | grep DISPLAYdalam hal ini. Sekarang menunjukkan DISPLAY=localhost:11.0. Dari apa yang saya ketahui, ini terkait dengan MIT-MAGIC-COOKIE dalam file .Xauthority tetapi karena saya tidak tahu banyak tentang ini, saya tidak akan melangkah lebih jauh.

Kesimpulan: dari tiga kasus di atas, kami dapat mengonfirmasi bahwa agar remote X Windows ditampilkan dengan benar, keduanya 1. variabel DISPLAY mesin lokal dan 2. ssh -Xswitch harus diatur dengan benar. Tentu saja, server jarak jauh harus memungkinkan X11 meneruskan.

kwagjj
sumber