Saya mencoba untuk membuka xterm
di 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?
xterm
terminal saat ini sebelum melakukan ssh?Jawaban:
Jika ssh dapat membuat koneksi, itu akan diatur
DISPLAY
ke nilai yang tepat. Karena Anda telahX11DisplayOffset
menetapkan 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 mengesampingkanDISPLAY
. 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 adalahrshd
atausshd
, bahkan jika shell tidak interaktif). File lain yang mendefinisikan variabel lingkungan adalah/etc/environment
. Jika itu masalahnya, solusinya sudah jelas: jangan diatur diDISPLAY
sana. (Ada beberapa kasus di mana Anda perlu mengaturDISPLAY
secara 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 mengaturDISPLAY
di dalam layar (bukan ide yang bagus). Ini juga bisa terjadi jika Anda mengkonfigurasi server untuk menerima variabel lingkungan yang dikirim oleh klien (AcceptEnv
direktifsshd_config
), klien mengirimDISPLAY
, dan koneksi X tidak dapat dibuat. Atau itu bisa terjadi jika Anda menetapkan variabel lingkungan di server melaluicommand
arahan dalam~/.ssh/authorized_keys
. Atauxterm
bisa berupa skrip.¹ Atau apa pun nilainya
X11DisplayOffset
dalam konfigurasi server, tetapi hampir tidak pernah berubah dari standarnya.sumber
DISPLAY=localhost:11.0
di sayaenv
, tetapi relevansinya dan apakah saya harus mengubahnya tidakDISPLAY 10.0
jelas.DISPLAY=:0 xterm
dan masih mendapatkanxterm: Xt error: Can't open display: :0
kesalahan, jadi variabel lingkungan bukanlah masalahnya.Perintah Anda harus bekerja, atau setidaknya itu berlaku untuk saya. Coba ini sebagai gantinya:
Edit (1):
Coba ini:
Itu harus menunjukkan semua lingkungan. Harus ada berbagai hal SSH di sana, dan juga DISPLAY. TAMPILAN harus 10.0.
Anda juga dapat mencoba ini:
sumber
-Y
tetapi tidak berhasil juga. Saya masih mendapatkanCan't open display: :0.0
localhost:10.0
Kontrol akses X mungkin menghalangi.
Jalankan
xhost +
(dari paketx11-xserver-utils
) untuk sepenuhnya menonaktifkan kontrol akses.sumber
Selain itu
X11Forwarding yes
, saya juga perlu menambahkandi
/etc/ssh/sshd_config
seperti yang dijelaskan di sini .
sumber
Saya menemukan bahwa xauth belum diinstal.
sumber
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/
sumber
Anda harus membuka koneksi terlebih dahulu, dan setelah membuka xterm.
sumber
ssh -X name@machine
dan setelah koneksixterm
saya mendapatkan kesalahan yang sama. Apakah maksud Anda itu? ;)ssh
pertama-tama menghubungkan, kemudian xterm dimulai dissh
lingkungan itu. Jadi bagaimanapun juga itu adalah hal yang hampir sama hanya jika Anda menggunakanssh -X remote
pertama maka Anda dapat memeriksa apakah Anda memeriksaecho $DISPLAY
untuk memastikan bahwa$DISPLAY
sudah diatur dengan benar pada komputer remote setelahssh -X
.