Di mesin lokal saya, saya menjalankan:
ssh -X [email protected]
(Untuk kelengkapan, saya juga telah menguji semua hal berikut menggunakan -Y dengan hasil yang sama).
Seperti yang diharapkan, ini mengakses remotemachine.com dengan baik, dan semuanya tampak baik. Namun, jika saya mencoba menjalankan xcalc, saya mendapatkan:
connect /tmp/.X11-unix/X0: No such file or directory
Error: Can't open display: localhost:10.0
Tapi,
$ ls -la /tmp/.X11-unix/
total 36
drwxrwxrwt 2 root root 4096 2012-11-23 09:29 .
drwxrwxrwt 8 root root 32768 2012-11-29 08:22 ..
srwxrwxrwx 1 root root 0 2012-11-23 09:29 X0
Jadi tidak hanya /tmp/.X11-unix/X0, ia memiliki izin r/w/x universal!
Saya sebelumnya telah menggunakan penerusan x tanpa masalah, meskipun tidak dalam beberapa waktu…
uname -a di server untuk referensi:
Linux machinename 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux
Telah mencari-cari di web selama beberapa jam sekarang tanpa hasil. Penyebutan lain dari masalah yang sama, tetapi tidak ada solusi.
Jawaban yang Diterima:
Jika Anda menjalankan server X dan DISPLAY
variabel lingkungan diatur ke :0
, yang memberi tahu aplikasi untuk terhubung ke server X menggunakan soket domain unix yang umumnya dapat ditemukan di Linux di /tmp/.X11-unix/X0
(meskipun lihat di bawah tentang ruang nama abstrak di Linux terbaru).
Saat Anda ssh ke mesin mesin jarak jauh , sshd
di mesin jarak jauh set DISPLAY ke localhost:10
(misalnya), yang kali ini berarti bahwa koneksi X dilakukan melalui TCP ke port 6010 dari mesin localhost. sshd di mesin jarak jauh mendengarkan koneksi di sana dan meneruskan koneksi masuk ke klien ssh. Klien ssh kemudian mencoba menyambung ke /tmp/.X11-unix/X0
(di ujung lokal, bukan remote) untuk menghubungi server X Anda.
Sekarang, mungkin Anda tidak menjalankan server X (apakah Anda menggunakan Mac?) atau mungkin soket domain unix tidak dapat ditemukan di /tmp/.X11-unix yang berarti ssh belum dikonfigurasi dengan benar saat kompilasi waktu.
Untuk mengetahui jalur yang tepat untuk soket unix, Anda dapat mencoba strace -e connect xlogo
(atau yang setara di sistem Anda) di mesin lokal Anda untuk melihat apa yang dilakukan aplikasi X normal.
netstat -x | grep X
mungkin juga memberikan petunjuk.
Sebagai catatan, pada mesin wheezy Linux Debian di sini, Xorg mendengarkan keduanya /tmp/.X11-unix/X0
di sistem file dan /tmp/.X11-unix/X0
di ruang nama abstrak (umumnya ditulis @/tmp/.X11-unix/X0
). Dari strace
, aplikasi X11 tampaknya sekarang menggunakan ruang nama abstrak itu secara default, yang menjelaskan mengapa itu masih berfungsi jika /tmp/.X11-unix
dihapus, sementara ssh
tidak menggunakan ruang nama abstrak itu.