it-mure.jp.net

別のコンピューターで実行されているFirefoxインスタンスでURLを開きますか?

Firefoxを実行しています。コマンドラインから、次のように入力するだけで新しいタブを開くことができます。

firefox http://stackoverflow.com

私が達成しようとしていることは似ていますが、リモートです。 FirefoxをマシンBで実行しています。マシンAから(必要なsshトンネリングなどを設定した後)次のようなものを実行できるようにします。

firefox http://stackoverflow.com

ただし、タブはマシンAではなくマシンBで開く必要があります。X11転送は必要ありません。リモートマシンのFirefoxに特定のURLを開くように指示できるようにしたいだけです。

何か案は?

4

Firefoxが実行および表示されるマシン(マシンA)では、次のことを行う必要があります。

  • 接続するXサーバーを指定します。例: DISPLAY =:0.0を設定します。
  • Xサーバーに対して何らかの方法で認証します。簡単な方法は、Xセッションで$ XAUTHORITYの値を読み取り、同じ値を使用することです。

たとえば、Xセッションの端末では次のようにします。

$ echo $XAUTHORITY 
/var/run/gdm/auth-for-ambro-j3bu8Q/database

次に、SSHターミナルから、Xセッションと同じユーザーとして実行します(それ以外の場合はsuを使用します)。

DISPLAY=:0.0 XAUTHORITY=/var/run/gdm/auth-for-ambro-j3bu8Q/database firefox http://stackoverflow.com

ログイン時に$ XAUTHORITYの値をどこかに自動的に書き込むことができます。たとえば、次のスクリプト〜/ write-xauthを作成します(chmod + xを忘れないでください)。

#!/bin/bash
touch "$HOME"/.saved-xauthority
chmod u=rw,g=,o= "$HOME"/.saved-xauthority
echo "$XAUTHORITY" > "$HOME"/.saved-xauthority

次に、上記のスクリプトを実行する自動起動ファイル〜/ .config/autostart/save-xauthority.desktopを作成します:

[Desktop Entry]
Type=Application
Name=Save XAUTHORITY to .saved-xauthority
Exec=/home/<type_user>/write-xauth
Terminal=false
X-KDE-StartupNotify=false
StartupNotify=false

マシンB(Firefoxが表示されないマシン)にシェルができたら、マシンA(Firefoxが実行されて表示されるマシン)にSSHで接続し、私が投稿したfirefoxコマンドを実行するだけです。これをマシンBのスクリプトに自動化することができます。マシンAへのSSH認証には(パスワードではなく)キーを使用する必要があります。たとえば、 https://wiki.archlinux.org/index)を参照してください。 .php/SSH_Keys 。これにより、パスワードを入力せずに非対話的にsshを実行できます。これで、次のように入力して、マシンBからマシンAでコマンドを実行できます。

ssh machineA command argument ...

あなたの場合、Firefoxウィンドウを開くためのスクリプトをmachineAで作成することをお勧めします。

ssh machineA ./open_local_firefox http://whatever

そして、このスクリプトは次のようになります。

#!/bin/bash
export DISPLAY=:0.0
export XAUTHORITY=$(cat "$HOME"/.saved-xauthority)
firefox "$1" &>/dev/null 2>&1 &

この設定により、マシンBは、SSHを使用しているユーザーとしてマシンA上で何でも実行できるようになることに注意してください。これを制限することは可能ですが、それは簡単ではありません。 SSHでこれを実行したい場合は、sshdのForceCommandオプションがおそらく役立つでしょう。

もちろん、これを行う方法は他にもありますが、結局のところ、適切なユーザーとして適切な環境変数(上記のように)を使用してマシンAで「firefox」コマンドを実行することになります。たとえば、特定のPOSTリクエストがそのFirefoxウィンドウを開くように、マシンAにHTTPサーバーとスクリプトを設定できます。これはSSHアプローチよりもおそらく安全です。

1
Ambroz Bizjak

あなたの質問はあまり明確ではありません。つまり、ローカルマシンLの前に座っているそしてリモートマシンRでXセッションを実行firefoxを実行したい場合、次のことができます。

マシンから[〜#〜] l [〜#〜]リモートマシンにログイン[〜#〜] r [〜#〜] ssh:

ssh [email protected]

リモートマシンで実行中のXディスプレイを検索します(ディスプレイは/tmp/.X11-unixのソケットに対応します)。

ls -l /tmp/.X11-unix/

私の場合の結果は次のとおりです。

srwxrwxrwx. 1 erik         erik         0 13. Jun 14:44 X0
srwxrwxrwx. 1 concubine    concubine    0 13. Jun 11:40 X1
srwxr-xr-x. 1 gdm          gdm          0 13. Jun 11:13 X1024
srwxrwxrwx. 1 gdm          gdm          0 13. Jun 16:17 X2
srwxrwxrwx. 1 wife         wife         0 13. Jun 16:25 X3

私は妻に何かを彼女のディスプレイに見せたいので、私はそうします:

export DISPLAY=:3

これはソケットに対応しますX3

その後、私はただ走ります:

firefox 'http://superuser.com/a/1088747/180675'

彼女にこの興味深い答えを示すために。

0
erik