ssh -X “Kesalahan Xt: Tidak dapat membuka tampilan:: 0,0”

9

Saya mencoba untuk membuka xtermdi server jarak jauh saya (Ubuntu Server 10.04) dengan ssh:

ssh -X name@machine xterm

tetapi kesalahan yang dikembalikan adalah:

xterm Xt error: Can't open display: :0.0`

Saya mencari di Google dan mencoba semua yang saya temukan. Masih mendapatkan kesalahan ini. Variabel DISPLAY harus diatur secara otomatis, bukan?

Bagian dari sshd_config:

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Ada saran?

Fabian
sumber
Bisakah Anda menjalankan xtermterminal saat ini sebelum melakukan ssh?
enzotib
@ belacqua: tidak perlu. Saya biasanya terhubung ke server tanpa kepala jarak jauh dan dapat dengan mudah menjalankan aplikasi X jarak jauh di server X lokal.
enzotib
@enzotib - terima kasih; Saya tidak tahu itu.
belacqua
@enzotib maaf, saya tidak melihat komentar Anda. Ya, saya dapat membuka xterm di komputer lokal saya
Fabian

Jawaban:

8

Jika ssh dapat membuat koneksi, itu akan diatur DISPLAYke nilai yang tepat. Karena Anda telah X11DisplayOffsetmenetapkan ke 10 (nilai default), ssh akan menggunakan tampilan pertama yang tersedia mulai dari 10. Jika Anda melihat nilai yang lebih rendah dari 10¹, maka ada sesuatu yang mengganggu penerusan X11 normal yang diatur oleh ssh, setidaknya dengan mengesampingkan DISPLAY. Nilai :0(atau :0.0, bagian setelah titik tidak relevan) menunjukkan tampilan pertama yang dimulai pada mesin, yang dalam kasus tertentu adalah sesi aktif (atau prompt login grafis) pada konsol mesin.

Penjelasan yang paling mungkin untuk perilaku yang Anda amati adalah bahwa salah satu file konfigurasi shell Anda ditetapkan DISPLAY. Penyebab paling jelas adalah ~/.bashrc(yang disebabkan oleh kekhasan bash dieksekusi setiap kali induk bash adalah rshdatau sshd, bahkan jika shell tidak interaktif). File lain yang mendefinisikan variabel lingkungan adalah /etc/environment. Jika itu masalahnya, solusinya sudah jelas: jangan diatur di DISPLAYsana. (Ada beberapa kasus di mana Anda perlu mengatur DISPLAYsecara manual.)

Ada penjelasan eksotis lainnya. Ini mungkin terjadi jika Anda telah mengubah shell login Anda screen(ide lucu dalam teori, tetapi tidak praktis) dan Anda memiliki file inisialisasi shell yang secara paksa mengatur DISPLAYdi dalam layar (bukan ide yang bagus). Ini juga bisa terjadi jika Anda mengkonfigurasi server untuk menerima variabel lingkungan yang dikirim oleh klien ( AcceptEnvdirektif sshd_config), klien mengirim DISPLAY, dan koneksi X tidak dapat dibuat. Atau itu bisa terjadi jika Anda menetapkan variabel lingkungan di server melalui commandarahan dalam ~/.ssh/authorized_keys. Atau xtermbisa berupa skrip.

¹ Atau apa pun nilainya X11DisplayOffsetdalam konfigurasi server, tetapi hampir tidak pernah berubah dari standarnya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
memiliki cara terdaftar untuk memperbaiki berbagai masalah yang Anda sebutkan akan sangat membantu.
George Stocker
@ GeorgeStocker Semua masalah ini adalah dari bentuk "ada beberapa pengaturan dalam file konfigurasi", jadi perbaikan untuk semua ini adalah untuk menghapus atau mengubah pengaturan. Apakah ada satu yang dapat Anda identifikasi tetapi tidak diperbaiki?
Gilles 'SANGAT berhenti menjadi jahat'
Saya melihat DISPLAY=localhost:11.0di saya env, tetapi relevansinya dan apakah saya harus mengubahnya tidak DISPLAY 10.0jelas.
George Stocker
@ GeorgeStocker Maka gejala Anda tidak cocok dengan pertanyaan ini. Saya telah memperbarui jawaban saya untuk mengklarifikasi bahwa 10 adalah nilai cutoff di bawah mana jawaban ini berlaku. 11 adalah nilai yang diharapkan di sini (mungkin koneksi SSH aktif kedua dengan penerusan X).
Gilles 'SANGAT berhenti menjadi jahat'
Saya sedang menjalankan DISPLAY=:0 xtermdan masih mendapatkan xterm: Xt error: Can't open display: :0kesalahan, jadi variabel lingkungan bukanlah masalahnya.
Dan Dascalescu
3

Perintah Anda harus bekerja, atau setidaknya itu berlaku untuk saya. Coba ini sebagai gantinya:

ssh -Y user@machine xterm

Edit (1):

Coba ini:

ssh -X user@machine env

Itu harus menunjukkan semua lingkungan. Harus ada berbagai hal SSH di sana, dan juga DISPLAY. TAMPILAN harus 10.0.

Anda juga dapat mencoba ini:

ssh -X user@machine DISPLAY=10.0 xterm
ed.
sumber
Saya mencobanya dengan -Ytetapi tidak berhasil juga. Saya masih mendapatkanCan't open display: :0.0
Fabian
Apa mesin lokal Anda berjalan? The: 0,0 mengkhawatirkan, karena ini adalah default untuk server X lokal , bukan yang remote ...
red.
Saya menggunakan Ubuntu 10.04, Linux Mint 11 atau Mac OS X 10.7. Penggunaan tergantung pada lokasi (kantor / rumah), tetapi kesalahannya tetap sama
Fabian
Saya akan mengedit jawabannya ... (1)
red.
Variabel DISPLAY saya adalahlocalhost:10.0
Alexis Wilke
2

Kontrol akses X mungkin menghalangi.

Jalankan xhost +(dari paket x11-xserver-utils) untuk sepenuhnya menonaktifkan kontrol akses.

Geert
sumber
2

Selain itu X11Forwarding yes, saya juga perlu menambahkan

X11UseLocalhost no

di /etc/ssh/sshd_config

seperti yang dijelaskan di sini .

pengguna2400538
sumber
1

Saya menemukan bahwa xauth belum diinstal.

allen
sumber
0

Juga, periksa apakah Anda telah menginstal X11 di ujung klien. Saya mendapatkan masalah ini ketika saya memutakhirkan Mac saya ke OS X Mountain Lion. Mountain Lion menghapus X11, jadi Anda harus menginstalnya lagi melalui proyek open source X Quartz. http://xquartz.macosforge.org/landing/

Paul Maunders
sumber
-1

Anda harus membuka koneksi terlebih dahulu, dan setelah membuka xterm.

animaletdesequia
sumber
Terima kasih atas jawaban Anda. Apa yang Anda maksud dengan "buka koneksi"? Ketika saya menggunakan ssh -X name@machine dan setelah koneksi xtermsaya mendapatkan kesalahan yang sama. Apakah maksud Anda itu? ;)
Fabian
Tidak, itu harus bekerja juga tanpa menghubungkan terlebih dahulu.
enzotib
@Fabian - Saya percaya itu yang dia maksud.
belacqua
Saya pikir koneksi VNC diperlukan.
nanofarad
@enzotib, well ... sebenarnya sshpertama-tama menghubungkan, kemudian xterm dimulai di sshlingkungan itu. Jadi bagaimanapun juga itu adalah hal yang hampir sama hanya jika Anda menggunakan ssh -X remotepertama maka Anda dapat memeriksa apakah Anda memeriksa echo $DISPLAYuntuk memastikan bahwa $DISPLAYsudah diatur dengan benar pada komputer remote setelah ssh -X.
Alexis Wilke