Na svém místním počítači spustím:
ssh -X [email protected]
(Pro úplnost jsem také testoval všechny následující pomocí -Y s identickými výsledky).
Jak se očekávalo, tento přístup k remotemachine.com je v pořádku a vše vypadá dobře. Pokud se však pokusím spustit xcalc, dostanu:
connect /tmp/.X11-unix/X0: No such file or directory
Error: Can't open display: localhost:10.0
Ale,
$ 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
Takže nejen že /tmp/.X11-unix/X0 existuje, ale má i univerzální r/w/x oprávnění!
Dříve jsem bez problémů používal x-forwarding, i když ne po nějaké době…
uname -a na serveru pro referenci:
Linux machinename 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux
Už několik hodin hledám na webu bez úspěchu. Další zmínky o stejném problému, ale žádná řešení.
Přijatá odpověď:
Pokud máte spuštěný X server a DISPLAY
proměnná prostředí je nastavena na :0
, který říká aplikacím, aby se připojily k X serveru pomocí unixového doménového soketu, který se obecně na Linuxu nachází v /tmp/.X11-unix/X0
(i když viz níže o abstraktním jmenném prostoru na nejnovějším Linuxu).
Když ssh na stroj vzdálený stroj , sshd
na vzdáleném stroji nastaví DISPLAY na localhost:10
(například), což tentokrát znamená, že X spojení se provádí přes TCP na portu 6010 počítače localhost. sshd na vzdáleném počítači naslouchá připojení a předává všechna příchozí připojení klientovi ssh. Ssh klient se poté pokusí připojit k /tmp/.X11-unix/X0
(na místním konci, ne na vzdáleném) a kontaktujte váš X server.
Možná nemáte spuštěný X server (jste na Macu?) nebo možná není v /tmp/.X11-unix nalezen soket unixové domény, což by znamenalo, že ssh nebylo při kompilaci správně nakonfigurováno čas.
Chcete-li zjistit, jaká je správná cesta pro unixový socket, můžete zkusit strace -e connect xlogo
(nebo ekvivalent ve vašem systému) na vašem místním počítači, abyste viděli, co dělá normální X aplikace.
netstat -x | grep X
může také napovědět.
Pro záznam, zde na linuxovém Debianu poslouchá Xorg na obou /tmp/.X11-unix/X0
v souborovém systému a /tmp/.X11-unix/X0
v abstraktním jmenném prostoru (obecně se píše @/tmp/.X11-unix/X0
). Z strace
Zdá se, že aplikace X11 nyní ve výchozím nastavení používají tento abstraktní jmenný prostor, což vysvětluje, proč stále fungují, pokud /tmp/.X11-unix
je odstraněn, zatímco ssh
nepoužívá tento abstraktní jmenný prostor.