DISPLAYをホスト名に設定できないのはなぜですか?

DISPLAYをホスト名に設定できないのはなぜですか?

CentOS 6.7では、sshローカルワークステーションからリモートホストに移動し、ホスト名またはIPアドレスを使用してDISPLAY環境変数をワークステーションに設定すると、Xディスプレイを開くことができません。

例:

$ ssh -Y host1
$ export DISPLAY=ws1:0.0    # workstation hostname=ws1
$ xeyes
Can't not open display 

しかし、以下はうまくいきます。

$ ssh -Y host1
$ echo $DISPLAY
localhost:10.0
$ xeyes           # works as expected

ホスト名で$ DISPLAYを設定するとX-displayが機能しないのはなぜですか?

ベストアンサー1

重大なセキュリティ問題のため、X サーバーへのリモートアクセスは現在一般的に禁止されています。

ファイアウォールおよび/またはXサーバーの設定により、これらの接続が成功しない可能性があります。

これにより、ローカルおよびUnixドメインソケット接続のみが許可されます。ローカルホスト:サーバー[.display]またはまったくホストがありません:サーバー[.display]利用可能な設定があります。

XサーバーがTCPポートでリッスンしていることを確認するには、次のコマンドを実行し、Xサーバー(トンネリングの場合はSSH)が6000以上の範囲のポートを使用していることを確認できます。

$ sudo netstat -anp|grep -w LISTEN

サーバーがUnixバインディングソケットのみを受信して​​いる場合は、次のように表示されますlsof

$ sudo lsof -p $(pgrep Xorg)

次の行は Unix ソケットを示します。

Xorg    1874 root   21u     unix 0xffff8800d5db4000      0t0      21169 @/tmp/.X11-unix/X0 type=STREAM

TCPポートでリッスンしているすべてのプロセスを識別するには、次のコマンドを実行できます。

$ sudo lsof -P | grep -w LISTEN

たとえば、次はTCPポート22でリッスンするSSHデーモンです。

sshd 1032 ルート 4u IPv6 22727 0t0 TCP *:22(リスニング)

おすすめ記事