そうですね、これは奇妙です。私はラップトップ (LMDE) から ssh -X を使用してリモート ホスト (SUSE Linux enterprise) に接続しています。プライベート ネットワーク上の Web ページにアクセスできるように、リモート サーバーで実行されている Firefox インスタンスを起動したいと考えています。
User@RemoteMachine $ which -a firefox
/usr/bin/firefox
User@RemoteMachine $ /usr/bin/firefox --version
Mozilla Firefox 2.0.0.2, Copyright (c) 1998 - 2007 mozilla.org
User@LocalMachine $ which -a firefox
/usr/bin/firefox
User@LocalMachine $ /usr/bin/firefox --version
Mozilla Firefox 14.0.1
これで、Firefoxがローカルマシン上で実行されていない場合、すべてが期待通りに進み、firefox
リモートマシン上で実行するとFirefox(v 2.0)ウィンドウが表示されます。リモートマシン上で実行中表示されます。ただし、Firefoxはローカルマシン上で実行中2番Firefox 14. 0. 1 のウィンドウローカルマシンで実行中が表示されます。
両方のマシンで top を確認しました。2 番目のケースでは、Firefox プロセスがリモート マシンに短時間表示され、その後、ローカル バージョンの Firefox が起動されると消えます。
私の質問は次のとおりです。
何が起こっているのでしょうか? Firefox はどのようにして、またなぜ、ローカル マシン上の既存のインスタンスに接続できるのでしょうか? リモート マシンはローカル マシンにアクセスできるようです。実際、ローカル マシン上でプログラムを実行する権限があるようです。何か見落としているのでしょうか、それとも単におかしいのでしょうか?
これはセキュリティ上のリスクではないでしょうか?
答え1
デフォルトでは、Firefox は既存の Firefox プロセスと通信し、それを再利用します。
この動作を無効にして新しいプロセスを開始する場合は、-no-remote
2 番目の Firefox プロセスを開始するときにコマンド ライン オプションを追加します。
firefox -no-remote
答え2
スイッチ-X
は、リモート X クライアントをローカル X サーバーに転送します。Firefox は、ディスプレイ上で既に実行されていることを検出し、既に実行されているインスタンスに新しいウィンドウを開くように指示するために、内部の X ウィンドウ システム通信メカニズムを使用する必要があります。