Como inicio uma janela remota do firefox via SSH?


56

Quando eu SSH para uma caixa remota

$ ssh -X remotebox

então inicie o firefox na caixa remota

remotebox$ firefox

e eu tenho o firefox em execução na minha máquina local, uma janela local do firefox será aberta. nenhum processo do firefox está sendo executado na caixa remota.

Se o firefox não estiver em execução na minha máquina local, uma janela remota do firefox será aberta.

Por que está abrindo uma janela local do Firefox? Como posso evitar isso?


Aqui estão mais algumas informações do meu sistema local.

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

Informações da 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

O comando a seguir inicia uma sessão remota do firefox com uma janela remota do firefox.

remotebox$ firefox -no-remote

O comando a seguir produz um breve atraso, depois retorna ao prompt e uma janela local do Firefox aparece. Nenhum processo do firefox em execução no controle remoto.

remotebox$ firefox

Informações de 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

O comando a seguir no remotebox2 inicia uma sessão remota do firefox conforme o esperado.

remotebox2$ firefox

Não sei por que o firefox no remotebox2 inicia uma sessão remota em vez de uma sessão local.


Podemos obter o conteúdo da $DISPLAYvariável na máquina local e na remota?
Aperson

@aperson, pergunta atualizada.
lesmana

Obrigado, $DISPLAYnão parece ser um problema, o ssh parece estar configurando as coisas corretamente.
aperson

Respostas:


46

além de firefox -no-remote outro parâmetro é o firefox -no-xshmque revela a técnica usada para fazê-lo funcionar.

A memória compartilhada X11 é uma técnica de comunicação entre processos que pode ser usada por todos os aplicativos conectados a uma determinada sessão do servidor x. Pode ser usado para executar arrastar e soltar e outros tipos de interação na área de trabalho.

Também pode ser (e é) usado para implementar aplicativos "abertos uma vez", a fim de reduzir a área ocupada (ou o número de janelas).

Como o protocolo X11 é transparente à rede, a "memória compartilhada" também é estendida aos clientes X11 remotos.


Existe alguma maneira de fazer x não fazer isso? Estou procurando contêiner para uma instalação de videogame / vinho para facilitar a distribuição, mas isso está me causando dores de cabeça, porque causará um comportamento não especificado, dependendo do que o usuário do contêiner instalou e está executando. Estou usando esta solução para fazer o encaminhamento x: stackoverflow.com/a/25168483 e gostaria de simplesmente garantir que o contêiner nunca compartilhe memória com o host.
Sir Substance

Ele não funciona para mim
Bob Ebert

Tente a sugestão mais baixa: export MOZ_NO_REMOTE = 1
Kieveli 26/01

15

Experimentar firefox -no-remote


isso funciona na abertura de uma janela remota do firefox. mas ainda não entendo por que um comando remoto pode acionar uma janela do firefox local para abrir.
lesmana

@lesmana isso pode ser devido ao encaminhamento x11 - se isso estiver configurado no, sshd_configvocê pode ter uma situação em que está sendo executado e encapsulado de volta.
Marco Ceppi

10

Observe que eu fiz escavações em cúpula, pois isso estava me incomodando e você também pode adicionar:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

ao seu perfil.


4

Você pode tentar isso, quando se conectou à máquina ( ssh user@host; nota: sem a opção -X), primeiro digite o comando follow

export DISPLAY=:0 

isso alteraria a exibição padrão para a da tela atual da área de trabalho. E então apenas digite

firefox

ter o firefox gerado na janela da área de trabalho. Verifique se você efetuou login na área de trabalho, sem o qual (sem logins) você receberá o seguinte erro;

firefox: cannot connect to X server :0

Esse método também funcionaria para áreas de trabalho bloqueadas. Verifique se você efetuou login na área de trabalho e no shell ssh com o mesmo nome de usuário.

Quando há várias sessões de desktop, cada sessão é identificado por um número diferente, como :0, :1, :2, etc.


Essa é a única resposta que funcionou para mim.
answerSeeker

2

Nenhuma das outras soluções funcionou para mim; portanto, isso foi depois de um pouco de pesquisa em outros sites.

Você precisa executar o firefox em um processo separado da mesma maneira que faria se estivesse fazendo tudo na máquina local. Use o gerenciador de perfis para criar um novo perfil da seguinte maneira.

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Para manter as coisas consistentes, decidi nomear cada novo perfil na máquina externa da mesma forma que o nome do host.


1

Navegação remota simples

Se você deseja navegar na Web localmente, como se estivesse sentado na frente de uma caixa remota:

$ ssh -X username@remote.example.com

Em seguida, execute o Firefox dentro da sessão do terminal remoto :

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

Observe o uso do -Xsinalizador no sshcomando. Você também pode executar as duas etapas de uma só vez, como mostrado abaixo:

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

Encapsulando um IP Remoto: Porta

Se você tiver um aplicativo executando remotamente que exponha algum tipo de front-end da web, estará interessado em expor a porta IP: remota como se fosse uma porta IP: local. Nesse caso, a -Lopção define uma correspondência entre localhost:localporte remotehost:remoteport, como mostrado no pseudo comando abaixo:

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

Por exemplo:

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

Em seguida, execute o Firefox localmente :

$ firefox http://127.0.0.1:18080

No exemplo acima, você está se conectando via SSH username@router.example.come está interessado em uma interface da Web exposta em internal.example.com:8080. Esta porta IP: remota será exposta localmente em 127.0.0.1:18080.


0

Vou apenas adicionar o que funcionou para mim. Simplesmente usando firefox -no-remotefalhou com o erro usual

Error: GDK_BACKEND does not match available displays

No entanto, o seguinte funcionou:

ssh -Y user@host
firefox -no-remote

A -Yopção habilita o encaminhamento confiável do X11. Os encaminhamentos confiáveis ​​do X11 não estão sujeitos aos controles de extensão do X11 SECURITY. Você pode considerar adicionar uma -Copção ao sshcomando para ativar a compactação também.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.