GNU/Linux >> Belajar Linux >  >> Linux

Ssh – Mengapa Upaya Penerusan X11 Gagal Dengan “connect /tmp/.x11-unix/x0:No Such File or Directory”?

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.

Terkait:cara menjalankan server ssh di perangkat Android?
Linux
  1. Mengapa meletakkan hal-hal selain /home ke partisi terpisah?

  2. Mengapa pada beberapa sistem Linux, sistem file root muncul sebagai /dev/root bukan /dev/<real device node>di mtab?

  3. Haruskah situs web berada di /var/ atau /usr/ sesuai dengan penggunaan yang disarankan?

  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Bash =~ Regex Dan Https://regex101.com/?

  3. Kubuntu Menunjukkan Kesalahan Saat Masuk (file:///usr/share/sddm//themes/breeze/main.qml:no File Atau Direktori Tersebut)?

  1. Bagaimana systemd-tmpfiles membersihkan /tmp/ atau /var/tmp (pengganti tmpwatch) di CentOS / RHEL 7

  2. Mengapa find -exec mv {} ./target/ + tidak berfungsi?

  3. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR