SSH経由でリモートFirefoxウィンドウを起動するにはどうすればよいですか?


56

リモートボックスにSSHで接続する場合

$ ssh -X remotebox

次に、リモートボックスでfirefoxを起動します

remotebox$ firefox

ローカルマシンでfirefoxを実行している場合、ローカルのfirefoxウィンドウが開きます。リモートボックスで実行されているfirefoxプロセスはありません。

ローカルマシンでFirefoxが実行されていない場合、リモートのFirefoxウィンドウが開きます。

なぜローカルのFirefoxウィンドウを開くのですか?どうすればそれを防ぐことができますか?


ここに私のローカルシステムの詳細があります。

Linux lesmana-laptop 2.6.32-24-generic #42-Ubuntu SMP Fri Aug 20 14:24:04 UTC 2010 i686 GNU/Linux

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.1 LTS
Release:    10.04
Codename:   lucid

DISPLAY=:0.0

Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org

remoteboxの情報。

Linux dxray 2.6.22.19-0.4-default #1 SMP 2009-08-14 02:09:16 +0200 x86_64 x86_64 x86_64 GNU/Linux

LSB Version:    core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64:desktop-3.1-amd64:desktop-3.1-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.1-amd64:graphics-3.1-noarch
Distributor ID: SUSE LINUX
Description:    openSUSE 10.3 (X86-64)
Release:    10.3
Codename:   n/a

DISPLAY=localhost:15.0

Mozilla Firefox 3.0.14, Copyright (c) 1998 - 2009 mozilla.org

次のコマンドは、リモートfirefoxウィンドウでリモートfirefoxセッションを開始します。

remotebox$ firefox -no-remote

次のコマンドは短い遅延を生成し、その後プロンプトに戻り、ローカルのFirefoxウィンドウがポップアップします。remoteboxで実行されているfirefoxプロセスはありません。

remotebox$ firefox

remotebox2の情報。

Linux marvin 2.6.31-22-generic #60-Ubuntu SMP Thu May 27 00:22:23 UTC 2010 i686 GNU/Linux

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 9.10
Release:    9.10
Codename:   karmic

DISPLAY=localhost:11.0

Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org

remotebox2で次のコマンドを実行すると、期待どおりにリモートFirefoxセッションが開始されます。

remotebox2$ firefox

remotebox2上のfirefoxがローカルセッションではなくリモートセッションを開始する理由がわかりません。


$DISPLAYローカルマシンとリモートマシンの両方で変数の内容を取得できますか?
-aperson

@aperson、更新された質問。
レスマナ

おかげで、これ$DISPLAYは問題ではないようです。sshが適切に設定しているようです。
-aperson

回答:


46

さらに、firefox -no-remote 別のパラメーターはfirefox -no-xshm、それを機能させるために使用される手法を明らかにします。

X11共有メモリは、特定のxサーバーセッションに接続されているすべてのアプリケーションで使用できるプロセス間通信技術です。ドラッグアンドドロップ、およびその他の種類のデスクトップ操作を実行するために使用できます。

フットプリント(またはウィンドウの数)を削減するために、「一度だけ開く」アプリケーションの実装にも使用できます(また、使用されます)。

X11プロトコルはネットワーク透過的であるため、「共有メモリ」はリモートX11クライアントにも拡張されます。


xがこれを行わないようにする方法はありますか?簡単に配布できるようにビデオゲーム/ワインのセットアップをコンテナー化しようとしていますが、これは頭痛の種です。コンテナーのユーザーがインストールして実行しているものに応じて不特定の動作を引き起こすからです。私はこのソリューションを使用してxフォワーディングを実行しています:stackoverflow.com/a/25168483。コンテナがホストとメモリを共有しないようにするだけです。
サー物質

それは私のために動作しません
ボブ・エバート

下の提案を試してください:export MOZ_NO_REMOTE = 1
Kieveli

15

試して firefox -no-remote


これは、リモートのFirefoxウィンドウを開くときに機能します。しかし、リモートコマンドでローカルのFirefoxウィンドウを開くことができる理由はまだわかりません。
レスマナ

@lesmanaこれはx11-forwardingが原因である可能性があります-それがセットアップされてsshd_configいる場合、実行されてトンネルバックされる状況が発生する可能性があります。
マルコセッピ

10

注意してください、これは私を悩ませていたので、ドームを掘りました、そしてあなたは単に追加することもできます:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

あなたのプロフィールに。


4

マシンに接続したときにこれを試すことができます(ssh user@host;注:-Xオプションなし)、最初にfollowコマンドを入力します

export DISPLAY=:0 

これにより、デフォルトの表示が現在のデスクトップ画面の表示に変更されます。そして、入力するだけです

firefox

デスクトップウィンドウにfirefoxが生成されるようにします。デスクトップにログインしていることを確認してください。ログインしないと、次のエラーが表示されます。

firefox: cannot connect to X server :0

この方法は、ロックされたデスクトップでも機能します。同じユーザー名でデスクトップとsshシェルにログインしていることを確認してください。

複数のデスクトップセッションがある場合、各セッションは、以下のように異なる番号で識別され:0:1:2、等


それは私のために働いた唯一の答えです。
answerSeeker

2

他のソリューションはどれも役に立たなかったので、他のサイトで少し検索してみました。

firefoxは、ローカルマシンですべて実行する場合と同じ方法で、別のプロセスで実行する必要があります。プロファイルマネージャーを使用して、次のように新しいプロファイルを作成します。

export MOZ_NO_REMOTE=1
firefox -ProfileManager

物事の一貫性を保つために、外部マシン上の各新しいプロファイルにホスト名と同じ名前を付けることにしました。


1

シンプルなリモートブラウジング

リモートボックスの前に座っているかのようにローカルでウェブを閲覧したい場合:

$ ssh -X username@remote.example.com

次に、リモートターミナルセッション内で Firefox 実行します。

$ firefox https://test-ipv6.com/

コマンドの-Xフラグの使用に注意してくださいssh。以下に示すように、一度に両方のステップを実行することもできます。

$ ssh -X username@remote.example.com firefox http://test-ipv6.com/

リモートIP:ポートのトンネリング

何らかのWebフロントエンドを公開するアプリケーションをリモートで実行している場合、リモートIP:ポートをローカルIP:ポートであるかのように公開することに興味があります。この場合、-Lオプションは、対応関係を定義localhost:localportし、remotehost:remoteport以下の擬似命令に示すように、。

ssh -L localhost:localport:remotehost:remoteport remoteuser@remotehost

例えば:

$ ssh -L 127.0.0.1:18080:internal.example.com:8080 username@router.example.com

次に、Firefoxをローカルで実行します

$ firefox http://127.0.0.1:18080

上記の例では、SSH経由でに接続してusername@router.example.comおり、で公開されているWebフロントエンドに興味がありますinternal.example.com:8080。このリモートIP:ポートはでローカルに公開され127.0.0.1:18080ます。


0

私はちょうど私のために働いたものを追加します。firefox -no-remote通常のエラーで失敗した単純な使用

Error: GDK_BACKEND does not match available displays

ただし、次のように機能しました。

ssh -Y user@host
firefox -no-remote

この-Yオプションは、信頼できるX11転送を有効にします。信頼できるX11転送は、X11 SECURITY拡張制御の対象ではありません。圧縮を有効にする-Cためのsshコマンドにオプションを追加することも検討できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.