ローカルマシンで、次のコマンドを実行します:
ssh -X [email protected]
(完全を期すために、-Yを使用して以下のすべてをテストしましたが、同じ結果が得られました。)
予想どおり、これはremotemachine.comに正常にアクセスし、すべて正常に表示されます。ただし、xcalcを実行しようとすると、次のようになります。
connect /tmp/.X11-unix/X0: No such file or directory
Error: Can't open display: localhost:10.0
しかし、
$ 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
したがって、/tmp/.X11-unix/X0が存在するだけでなく、ユニバーサルr / w / x権限があります!
以前は問題なくx転送を使用していましたが、しばらくはありませんでした…
参照用のサーバー上のuname-a:
Linux machinename 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux
ウェブ上で数時間検索してきましたが、成功しませんでした。同じ問題に関する他の言及がありますが、解決策はありません。
承認された回答:
Xサーバーを実行していて、DISPLAY
がある場合 環境変数は:0
に設定されています 、これは、Linuxで一般的に/tmp/.X11-unix/X0
にあるunixドメインソケットを使用してXサーバーに接続するようにアプリケーションに指示します。 (ただし、抽象的な名前空間については以下を参照してください。 最近のLinuxの場合)。
マシンにSSHで接続する場合リモートマシン 、sshd
リモートマシン DISPLAYをlocalhost:10
に設定します (たとえば)。これは、X接続がTCPを介してマシンlocalhostのポート6010に対して行われることを意味します。 リモートマシンのsshd そこで接続をリッスンし、着信接続をsshクライアントに転送します。次に、sshクライアントは/tmp/.X11-unix/X0
への接続を試みます。 (リモートではなくローカル側で)Xサーバーに接続します。
Xサーバーが実行されていないか(Macを使用していますか?)、UNIXドメインソケットが/tmp/.X11-unixに見つからない可能性があります。これは、コンパイル時にsshが正しく構成されていないことを意味します。時間。
UNIXソケットの適切なパスを把握するには、strace -e connect xlogo
を試してください。 (またはシステム上の同等の機能)ローカルマシンで、通常のXアプリケーションの機能を確認します。
netstat -x | grep X
手がかりを与えることもあります。
ちなみに、ここのLinux Debian wheezyマシンでは、Xorgは両方の/tmp/.X11-unix/X0
をリッスンします。 ファイルシステムと/tmp/.X11-unix/X0
抽象的な名前空間 (一般的に@/tmp/.X11-unix/X0
と書かれています )。 strace
から 、X11アプリケーションは、デフォルトでその抽象名前空間を使用するようになりました。これは、/tmp/.X11-unix
の場合でもそれらが機能する理由を説明しています。 ssh
が削除されている間、 その抽象的な名前空間を使用しません。