ディスプレイを開けません - エラー

ディスプレイを開けません - エラー

次のコマンドを実行しました。セキュアCRTSSHクライアント:

$ DISPLAY=abc.xyz.com:0 ; export DISPLAY
$ /bin/xhost +abc.xyz.com

ただし、次のエラーが出力されます。

/bin/xhost:  unable to open display "abc.xyz.com"
# cat /etc/system-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)
# whoami
root

このエラーを解決するには?

答え1

2つのホストがあるとしましょう。

  • ホストAに使用したいモニターがあります
  • HostBに実行したいアプリケーションがあります

まず、ホストAにログインして実行して、xhost +hostBホストBがホストAのディスプレイにアクセスできるようにします。次に、HostBにログインし、DISPLAY=hostA:0 ; export DISPLAYここでアプリケーションを実行して起動します。

注:これは完全に暗号化されていない従来のX11接続であり、最新のLinuxディストリビューションではデフォルトで無効になることがよくあります。これらのコマンドを使用するには、まずホストAで操作を実行して、X11サーバーがTCPプロトコル(ローカルUNIXソケットだけでなく)を介して着信接続を受信するように構成する必要があります。

(これは暗号化されていないX11接続を使用するために削除する必要があるオプションをXサーバーのコマンドラインに追加することによって長い間行われました-nolisten TCP。また、-listen TCPローカルではなく暗号化されていないX11接続)

Linux/Unix システムでDISPLAY=:0.0UNIX ソケットを使用してアクセスできる X11 ディスプレイは、/tmp/.X11-unix/X0最初の (そして一般的に唯一の) ローカル X11 サーバーです。 Windowsシステムでは、このメカニズムは存在しません。

UNIXソケットメカニズムは、ローカルシステムアーキテクチャで利用可能な場合にのみ使用されます。そしてDISPLAY変数のホスト名部分は空の文字列です。ホスト名がリストされると、「localhost」でも TCP 接続が使用されます。

TCP接続を使用すると、X11サーバーはTCPポート(X + 6000)をDISPLAY=hostname:X.Yリッスンします。hostname

WindowsベースのX11サーバーを起動している場合は、Reflection Xなどの商用サーバーでも、Reflection Xなどの無料サーバーでもかまいません。VcXrvまたはクラシックシャオミング、起動するとすぐに、デフォルトでTCPポート6000をリッスンし始めます。最新バージョンは、localhost基本的にセキュリティ上の理由でのみ受信できます。一般的な選択肢は、システムが所有するすべてのIPアドレスを受信することです。

X11を使用する現代的で安全な方法は、SSHベースのX11配信です。 X11転送が有効なSSHクライアントを起動すると、利用可能なメカニズムを使用してSSHクライアントホストのローカルX11サーバーに接続します。 SSH接続では、セキュアサブチャネルを使用して接続しているすべてのホストにこの接続を転送します。

その後、sshdリモートホストのデーモンは、利用可能なTCPポート(通常は6010 +の範囲)でリッスンを開始し、1つを設定しDISPLAY=localhost:X.0(ここでX =選択したポート番号 - 6000)、SSHクライアントと連携してxauthSSHの場合、Cookieを自動的に設定します。必要に応じて、クライアントのX11サーバーがこれを提供できます。

クライアントホスト上のX11サーバーの場合、着信X11トラフィックはローカルSSHクライアントプロセスから来るため、通常xhostSSHクライアントホストにはコマンドは必要ありません。

結果:DISPLAY手動で設定する必要もなく、xhostコマンドも必要ありません。ローカルX11サーバーが稼働していることを確認し、SSHクライアントでX11転送を有効にし、SSHを使用してリモートホストに接続し、X11 GUIプログラムを起動します。プログラムウィンドウがローカルモニタに表示されます。ただ働きます。

これは、X11接続を確立する古典的な方法に精通している人にとっては新しいニュースかもしれません。

私は15年前、ファイアウォールが既存の暗号化されていないX11接続を許可しなかったため、Oracleをインストールするために時々サーバールームに行かなければならなかった不審な古いデータベース管理者にこれを示しました。

彼は私を抱きしめた。

関連情報