から https://unix.stackexchange.com/a/17278/674
ssh -X localhost
を実行すると、$DISPLAY
が(おそらく)localhost:10.0
であることがわかります。:0.0
、とは対照的です。これは、SSH経由で接続していない場合の値です。 (.0
の部分は省略できます。これは画面番号ですが、複数の画面が使用されることはほとんどありません。)Xディスプレイには、次の2つの形式があります。これまでに遭遇:
:
の前に何もないローカルディスプレイ。- TCPが表示され、
:
の前にホスト名が表示されます。
ssh -X localhost
を使用すると、Xサーバーから両方のディスプレイにアクセスできますが、アプリケーションは別の方法を使用します。:NUMBER
はローカルソケットと共有メモリを介してサーバーにアクセスしますが、HOSTNAME:NUMBER
はTCP経由でサーバーにアクセスします。これは低速で一部の拡張機能を無効にします。
Xサーバー、ディスプレイ、スクリーンの関係と違いは何ですか?
「両方のディスプレイを介したXサーバー」とはどういう意味ですか? 「ディスプレイ」はディスプレイサーバー、つまりXサーバーを意味しますか。したがって、2つの「ディスプレイ」は2つのディスプレイサーバー、つまり2つのXサーバーを意味します。
「複数画面」とはどういう意味ですか? 「画面」とはディスプレイモニターを意味しますか?
ありがとう。
X11の基本とバックグラウンドで何が行われているのかを説明する視覚的な例を紹介します。
この例では、hostAに2つの「画面」を持つローカルX11サーバーがあります。通常、すべてのモニターにまたがる(マルチモニターアプリケーションをより簡単にする)1画面(:0.0)のサーバーは1つだけです。 hostBには2つのXサーバーがあり、2番目のサーバーには物理ディスプレイがありません(例:VNCの仮想フレームバッファー)。 hostCは、モニターのないヘッドレスサーバーです。
ターミナル1a、2a、5a、6a:ローカルターミナルを開き、ディスプレイを:0.0(デフォルト)または:0.1に設定すると、図面グラフィカルプログラムの呼び出しは、メモリを介してローカルXサーバーに直接送信されます。
端末1b、5b:あるサーバーにsshを実行すると、通常、ローカルXサーバーが使用可能な場合は、そのディスプレイがローカルXサーバーに自動的に設定されます。それ以外の場合は設定されません(理由は端末3を参照)。
端末2b、6b:サーバーにsshし、「-X」パラメータを介してX11転送を有効にすると、トンネルが自動的に作成されますssh-接続。この場合、TCP hostBのポート6010(6000 + display#)がhostAのポート6000(Xサーバー#0)にトラフィックを転送しています。通常、最初の10ディスプレイは「実"サーバー、したがってssh再マップは#10を表示します(ログインしている間にssh -Xで接続している次のユーザーは#11を取得します)追加のXサーバーは開始されておらず、hostA上のXサーバー#0の権限はsshによって自動的に処理されます。
ターミナル4:ディスプレイ/スクリーン番号の前にホスト名(例:localhost)を追加すると、X11はTCPメモリの代わりに。
端末3:最初にssh-tunnelを設定せずに、ネットワーク経由でX11コマンドを直接送信することもできます。ここでの主な問題は、ネットワーク/ファイアウォール/などです。これを許可するように構成する必要があります(X11は実質的に暗号化されないことに注意してください)。Xサーバーのアクセス許可は手動で付与する必要があります(xhostsまたはXauthority)。
Xサーバー、ディスプレイ、スクリーンの関係と違いは何ですか?
表示はsomeXサーバーsomewhereを参照するだけです。 「両方のディスプレイ」という用語は、ローカルコンピューター(「ローカルディスプレイ」)の「:0.0」がssh-target(「TCPディスプレイ」)の「localhost:10.0」と等しいことを示していました。 「スクリーン」とは、Xサーバーのさまざまな仮想モニター(フレームバッファー)を指します。 "localhost:10.0"はローカルXサーバーにのみリダイレクトしており、ssh-targetでXサーバーが起動されていません。