GNU/Linux >> Linux Esercitazione >  >> Linux

Ssh - Perché il tentativo di inoltro X11 non riesce con "connect /tmp/.x11-unix/x0:No Such File Or Directory"?

Sul mio computer locale, eseguo:

ssh -X [email protected]

(Per completezza, ho anche testato tutto quanto segue usando -Y con risultati identici).

Come previsto, questo accede a remotemachine.com bene e tutto sembra a posto. Se poi provo a eseguire xcalc, tuttavia, ottengo:

 connect /tmp/.X11-unix/X0: No such file or directory
 Error: Can't open display: localhost:10.0

Ma,

$ 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

Quindi non solo /tmp/.X11-unix/X0 esiste, ha permessi r/w/x universali!

In precedenza ho usato x-forwarding senza problemi, anche se non da un po' di tempo...

uname -a sul server per riferimento:

Linux machinename 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux

Ho cercato sul web per un paio d'ore senza successo. Altre menzioni dello stesso problema, ma nessuna soluzione.

Risposta accettata:

Se hai un server X in esecuzione e il DISPLAY la variabile di ambiente è impostata su :0 , che dice alle applicazioni di connettersi al server X utilizzando un socket di dominio unix che si trova generalmente su Linux in /tmp/.X11-unix/X0 (anche se vedi sotto sullo spazio dei nomi astratto su Linux recente).

Quando esegui un ssh su macchina remota , sshd su macchina remota imposta DISPLAY su localhost:10 (ad esempio), il che questa volta significa che le connessioni X devono essere eseguite su TCP alla porta 6010 della macchina localhost. sshd su macchina remota ascolta le connessioni lì e inoltra qualsiasi connessione in entrata al client ssh. Il client ssh prova quindi a connettersi a /tmp/.X11-unix/X0 (dall'estremità locale, non da quella remota) per contattare il tuo server X.

Ora, forse non hai un server X in esecuzione (sei su Mac?) O forse il socket del dominio unix non si trova in /tmp/.X11-unix, il che significherebbe che ssh non è stato configurato correttamente durante la compilazione tempo.

Per capire quale sia il percorso corretto per il socket unix, potresti provare a strace -e connect xlogo (o l'equivalente sul tuo sistema) sul tuo computer locale per vedere cosa fa una normale applicazione X.

netstat -x | grep X può anche dare un indizio.

Per la cronaca, su una macchina Linux Debian qui, Xorg ascolta su entrambi /tmp/.X11-unix/X0 nel filesystem e /tmp/.X11-unix/X0 nello spazio dei nomi astratto (generalmente scritto @/tmp/.X11-unix/X0 ). Da strace , le applicazioni X11 sembrano ora utilizzare quello spazio dei nomi astratto per impostazione predefinita, il che spiega perché funzionano ancora se /tmp/.X11-unix viene rimosso, mentre ssh non usa quello spazio dei nomi astratto.

Correlati:modo per eseguire un server ssh su un dispositivo Android?
Linux
  1. Kubuntu mostra un errore all'accesso (file:///usr/share/sddm//themes/breeze/main.qml:no Such File Or Directory)?

  2. UNIX / Linux :Qual è il permesso corretto delle directory /tmp e /var/tmp

  3. Perché find -exec mv {} ./target/ + non funziona?

  4. Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

  5. Perché su alcuni sistemi Linux, il filesystem di root appare come /dev/root invece di /dev/<real device node>in mtab?

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

unix:///var/run/supervisor.sock nessun file di questo tipo

Perché mettere cose diverse da /home in una partizione separata?

Qual è la differenza tra /tmp e /run?

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?