ssh -X
を使用する場合、実行可能ファイルがコピーされてローカルで実行されるか、ホストマシンで実行されます。これはX11フォワーディングと呼ばれているため、ウィンドウはマシン上に描画されていると思いますが、ホスト上で実行されています。
実行可能ファイルはリモートマシンで実行され、ローカルマシンに表示(描画)されます。 ssh -X remote
は、リモートマシンでプロキシX11サーバーを起動します。リモートマシンでecho $DISPLAY
を実行すると、localhost:21.0
のようなものが表示されます。これは、リモートマシンで実行されているプログラムに、ID 21のX11サーバーに描画コマンドを送信するように指示しています。これにより、ローカルマシンで実行されている実際のX11サーバーにコマンドが転送され、画面に描画されます。この転送は暗号化されたssh接続を介して行われるため、(簡単に)聞くことはできません。
WindowsやMac OSなどとは異なり、X11は最初から、リモートデスクトップなどを必要とせずにネットワーク経由でプログラムを実行できるように設計されています。しばらくの間、X11シンクライアントが人気でした。これは基本的に、X11サーバーのみを実行するストリップダウンしたコンピューターです。すべてのプログラムは、どこかのアプリケーションサーバーで実行されます。
アプリケーションは、ローカルで実行されているXコンポーネント(つまり、xコマンドのレンダリングなど)を除いて、リモートで実行されます。すべてのクライアントアプリケーションは通常、ローカルXサーバーを使用してUIを表示します。この場合、コマンドは暗号化されたSSHチャネルを介してリモートマシンからローカルマシンに送信され、そこで表示されます。
設定$DISPLAY
は契約の半分にすぎません。サーバー側のクライアントを認証できるようにするために、ssh
はxauth
も使用して新しい認証Cookieを作成します。見る xauth list
および~/.Xauthority
。
重要なのは、Xサーバーがユーザーにグラフィックスを提供する単一のものであり、グラフィックスを必要とするすべての異なるプログラムがXクライアントであり、サーバーに接続する必要があることを認識することです。クライアントプログラムとXサーバー間のインターフェースは、ローカルマシン上のものだけでなく、リモートプログラムとの接続をサポートするように最初から設計されました。
クレイジーなネットワークでは、プログラムはどこでも実行でき、そのグラフィックを他のどこにでも表示できます...