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.