SSH Xの転送について質問があります。これは、特にXプログラム、つまりIceweaselなどの特定のWebブラウザクライアントを渡す場合にそうです。
Xサーバー<--(Xクライアントで実行されたIceweasel表示要求)---Xクライアント
このWebブラウザでFlashやJavascriptゲームなどのいくつかの動的コンテンツを実行したいとします。
私の質問:Xサーバーで実行されますか、それともXクライアントで実行されますか?
答え1
だから、これは用語のために混乱する質問です。 Xサーバーは、コンピュータのビデオハードウェアと対話し、Xプロトコルを介してグラフィックを表示する機能をXクライアントに提供するプロセスです。したがって、X転送を使用してSSH経由で接続すると、Xクライアントはリモートサーバーにあり、Xサーバーはローカルシステムのプロセスです。
この場合、iceweaselはリモートサーバー上で実行されているため(Xクライアントとして実行中)、フラッシュはリモートサーバー上で実行されますが、SSHトンネルを介してXプロトコルを使用してローカルコンピューター上のXサーバーと通信しています。
答え2
Xサーバーはディスプレイとキーボード/マウス入力のみを処理します。任意のコードを実行しません(これはsshの目的です)。したがって、Webブラウザを実行すると、同じコンピュータでFlashとJavaScriptが実行されます。 Xサーバーを実行しているすべてのコンピュータにブラウザウィンドウが表示されます。 X転送の場合、これは通常、SSHサーバーがあるシステムがコードを実行しており、SSHクライアントがXサーバーを実行していることを意味します。
答え3
この点を念頭に置くために、私は常に2つの側面を念頭に置いています。
- 私のローカルコンピュータでグラフィックディスプレイを駆動するために必要なソフトウェアがあります。 (例:私のビデオカードと会話し、私のモニターで形を形成するなど)
- 自分で表示する必要がある一部の使用可能なアプリケーション(ターミナルやIceweaselなど)が実行されています。
したがって、Xの場合、すべてが逆になります。サーバーはあなたであり、クライアント(Iceweaselなどのアプリケーションなど)がXサーバーに接続しようとしています。したがって、SSHフォワードトンネルを流れる唯一のデータは、Xサーバーと通信するXクライアントに関連するデータです。 Xクライアントに関連するすべてのもの(Flash、Javascriptなど)はまだXクライアントで実行されています。
X Server X Client .-,( ),-.
__ _ (Iceweasel) .-( )-.
[__]|=| <------------ __ _ <-------- ( internet )
/::/|_| ssh [__]|=| '-( ).-'
tunnel /::/|_| '-.( ).-'
^ .-----------.
\ X Client #2
\ __ _
[__X Client #3
/:: __ _
[__]|=|
/::/|_|
答え4
Flashは、SSHクライアント(Xサーバーなど)ではなく、SSHサーバー(Xクライアントなど)でも実行されます。 SSH転送は、デフォルトでSSHクライアントに表示される「出力」を送信しますが、サーバー上で実行されます。
これは、SSHクライアントにブラウザやFlashをインストールする必要もなく、SSHサーバーにインストールするだけで十分であることを意味します。