Abra uma URL em uma instância do Firefox em execução em outro computador?

4

Tenho o Firefox em execução e, na linha de comando, posso abrir uma nova guia digitando apenas:

firefox http://stackoverflow.com

O que estou tentando realizar é semelhante, mas remotamente. Eu tenho o Firefox rodando na máquina B. Da máquina A eu quero ser capaz de rodar (depois de configurar qualquer tunelamento ssh ou similar é necessário) algo como:

firefox http://stackoverflow.com

No entanto, a guia deve abrir não na máquina A, mas na máquina B. Não quero o encaminhamento do X11, só quero instruir o Firefox em uma máquina remota para abrir uma determinada URL.

Alguma idéia?

    
por Angel de Vicente 18.07.2011 / 10:57

2 respostas

1

Na máquina onde o Firefox será executado e exibido (máquina A), você precisa:

  • Especifique qual servidor X conectar, por exemplo defina DISPLAY =: 0.0.
  • Autentique-se de alguma forma para o servidor X. Uma maneira fácil é ler o valor de $ XAUTHORITY na sessão X e usar o mesmo.

Por exemplo, em um terminal na sessão X, faça:

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

Em seguida, a partir do terminal SSH, faça como o mesmo usuário da sessão X (caso contrário use su):

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

Você pode ter o valor de $ XAUTHORITY escrito automaticamente em algum lugar quando você faz o login. Por exemplo, crie o seguinte script ~ / write-xauth (não se esqueça de chmod + x):

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

Em seguida, crie um arquivo de autoinicialização que executará o script acima, ~ / .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

Quando você tiver um shell na máquina B (a máquina na qual o Firefox não será exibido), basta conectar o SSH à máquina A (onde o Firefox será executado e exibido) e executar o comando firefox que eu postei. É possível automatizar isso em um script na máquina B. Você terá chaves de uso (em vez de senha) para autenticação SSH na máquina A. Por exemplo, consulte link . Isso permitirá que você ssh não interativamente, sem digitar uma senha. Agora você pode executar comandos na máquina A da máquina B digitando:

ssh machineA command argument ...

No seu caso, você provavelmente desejaria criar um script em machineA para abrir a janela do Firefox:

ssh machineA ./open_local_firefox http://whatever

E esse script seria parecido com:

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

É importante notar que esta configuração permitirá que a máquina B execute qualquer coisa na máquina A como o usuário com o qual você está usando o SSHing. É possível limitar isso, mas não é fácil. Se você quiser fazer isso com o SSH, a opção ForceCommand do sshd provavelmente ajudará.

Existem outras maneiras de fazer isso, é claro, mas tudo se resume a executar o comando 'firefox' na máquina A com o ambiente correto vars (como mostrado acima) como o usuário certo. Por exemplo, você pode configurar um servidor HTTP e um script na máquina A, de modo que uma determinada solicitação POST abra essa janela do Firefox. Isso é provavelmente mais fácil de proteger do que a abordagem SSH.

    
por 18.07.2011 / 14:42
0

Sua pergunta não é muito clara. Se você quer dizer que você está sentado na frente da sua máquina local L e quer executar firefox em uma sessão X em execução na máquina remota R , você pode fazer o seguinte:

Na sua máquina, L faça login na máquina remota R com ssh:

ssh wife@remotemachine

A pesquisa da execução do X é exibida na máquina remota (as telas correspondem a um soquete em /tmp/.X11-unix):

ls -l /tmp/.X11-unix/

O seguinte foi o resultado no meu caso:

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

Eu quero mostrar algo à minha esposa em seu display, portanto eu faço:

export DISPLAY=:3

Isso corresponde ao soquete X3 .

Depois disso, acabei de executar:

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

para mostrar a ela essa resposta interessante.

    
por 13.06.2016 / 18:22

Tags