WindowsでXサーバーを既に実行している場合(Xmingの場合と同様)、Windows側はほとんど完了しています(ただし、いくつかの重要な詳細については以下を参照してください)。残りの重要な点は、pi上のX11アプリにX11データをWindows PCに送信するように指示することです。
これはDISPLAY
環境変数を介して行われます。通常、Xサーバーとアプリが同じコンピューター上で実行されている場合、DISPLAYはサーバー番号(たとえば:0
、Xサーバーを1つだけ実行している場合)またはサーバーと画面(例:0.0
)を指定します。IPアドレスがないため、これはアプリのXライブラリにサーバーがローカルであり、それに応じて接続が確立されることを通知します(おそらく何らかの共有メモリトランスポートを介して)。
X11データをリモートノードに送信するようアプリに指示するには、DISPLAY
変数にIPアドレスを含めます。たとえば、export DISPLAY=192.168.1.10:0
。これにより、ノード192.168.1.10のXサーバー#0へのTCP接続を開く必要があることがX11アプリに通知されます。DNSホスト名は、ネットワーク上にある場合はここで問題ありません。
2つの潜在的な問題
最初の段落で書いたように、Xmingを実行するだけでは十分でない場合があります。追加の構成が必要になる場合があります。
1つ目は、TCPを介したリモートノードからの接続を受け入れるようにX11サーバーを構成する必要があることです。今日配布されている多くのXサーバー(Xmingについては知りません)は、明示的に設定しない限り、ローカルで実行されているアプリからの接続のみを受け入れます。開いているすべてのソケットが攻撃の潜在的なベクトルであるため、これはセキュリティ機能です。
2つ目は、X11サーバーが接続を許可されているホスト/ユーザーのデータベースを維持していることです。Raspberry PiのIPアドレスをホワイトリストに登録する必要があります。これは、xhost
WindowsのXmingから、たとえばxtermで実行されているコンソールからコマンドを実行することで実行できます。入力xhost +
してこのセキュリティチェックを無効にすることもできますが、世界中のどこからでもアプリがディスプレイへの接続を開くことができるため、危険です。誰もが信頼できるLANのファイアウォール(自宅など)の背後にいる場合は、これが最も簡単な方法xhost
ですが、そうでない場合は時間をかけて適切に構成してください。
代替: ssh -Y
上記のアプローチを使用すると、X11アプリはすべて、XサーバーへのTCP接続を開こうとします。これらの接続は安全ではありません。LANスヌーピングパケットの誰かがパケットを傍受する可能性があります。
この問題を解決するには、Raspberry piでDISPLAY変数を設定する代わりに-Y
、接続するときにパラメーターを使用します(例:)slogin -Y hostname
。-Yパラメーター(-Xのような)は、X11トラフィックを運ぶためのノード間にトンネルを作成します。これにより、X11トラフィックが暗号化されて安全になります。また、独自のDISPLAY環境変数を割り当てて、アプリがトンネルを使用するようにします。xhost
(Xサーバーに関する限り)接続がローカルで(SSHトンネルの発信側から)発生しているため、いじる必要がなくなる場合もあります。