¿Cómo inicio una ventana remota de Firefox a través de SSH?

56

Cuando yo SSH a una caja remota

$ ssh -X remotebox

luego inicie firefox en la caja remota

remotebox$ firefox

y tengo Firefox ejecutándose en mi máquina local, se abrirá una ventana local de Firefox. No se está ejecutando ningún proceso de Firefox en la caja remota.

Si Firefox no se ejecuta en mi máquina local, se abrirá una ventana remota de Firefox.

¿Por qué está abriendo una ventana local de Firefox? ¿Cómo puedo evitar eso?


Aquí hay más información de mi 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

Información de 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

El siguiente comando inicia una sesión remota de Firefox con una ventana remota de Firefox.

remotebox$ firefox -no-remote

El siguiente comando produce un breve retraso, luego regresa al indicador y aparece una ventana local de Firefox. No se ejecuta ningún proceso de Firefox en la caja remota.

remotebox$ firefox

Información 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

El siguiente comando en remotebox2 inicia una sesión remota de firefox como se esperaba.

remotebox2$ firefox

No sé por qué Firefox en remotebox2 inicia una sesión remota en lugar de una sesión local.

lesmana
fuente
¿Podemos obtener el contenido de la $DISPLAYvariable tanto en la máquina local como en la remota?
persona
@aperson, pregunta actualizada.
lesmana
Gracias, $DISPLAYno parece ser un problema, ssh parece estar configurando las cosas correctamente.
persona

Respuestas:

46

Además firefox -no-remote otro parámetro es el firefox -no-xshmque revela la técnica utilizada para hacerlo funcionar.

La memoria compartida X11 es una técnica de comunicación entre procesos que puede ser utilizada por todas las aplicaciones conectadas a una determinada sesión de servidor x. Se puede utilizar para realizar arrastrar y soltar, y otro tipo de interacción de escritorio.

Se puede usar (y se usa) también para implementar aplicaciones de "abrir una vez", a fin de reducir la huella (o el número de ventanas).

Dado que el protocolo X11 es transparente a la red, la "memoria compartida" se extiende también a los clientes X11 remotos.

ithkuil
fuente
¿Hay alguna forma de hacer que x no haga esto? Estoy buscando contenerizar una configuración de videojuego / vino para una distribución fácil, pero esto me está causando dolores de cabeza, ya que causará un comportamiento no especificado dependiendo de lo que el usuario del contenedor haya instalado y ejecutado. Estoy usando esta solución para hacer el reenvío x: stackoverflow.com/a/25168483 y me gustaría asegurarme de que el contenedor nunca comparta memoria con el host.
Sir Substance
No funciona para mí
Bob Ebert
Pruebe la sugerencia inferior: export MOZ_NO_REMOTE = 1
Kieveli
15

Tratar firefox -no-remote

Dennis Williamson
fuente
Esto funciona al abrir una ventana remota de Firefox. pero todavía no entiendo por qué un comando remoto puede activar la apertura de una ventana local de Firefox.
lesmana
@lesmana esto puede deberse al reenvío x11; si está configurado en el sshd_config, puede tener una situación en la que se está ejecutando y volviendo a canalizar.
Marco Ceppi
10

Tenga en cuenta que hice una excavación de domo ya que esto me estaba molestando y también puede agregar:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

a tu perfil.

usuario2577
fuente
4

Puede intentar esto, cuando se conectó a la máquina ( ssh user@host; nota: sin la opción -X), primero escriba el comando seguir

export DISPLAY=:0 

esto cambiaría la visualización predeterminada a la de la pantalla de escritorio actual. Y luego solo escribe

firefox

tener Firefox generado en la ventana del escritorio. Asegúrese de haber iniciado sesión en el escritorio, sin el cual (sin inicios de sesión) obtendrá el siguiente error;

firefox: cannot connect to X server :0

Este método también funcionaría para escritorios bloqueados. Asegúrese de haber iniciado sesión en el escritorio y en el shell ssh con el mismo nombre de usuario.

Cuando hay múltiples sesiones de escritorio, cada sesión se identifica por un número diferente como :0, :1, :2, etc.

josip b
fuente
Esa es la única respuesta que funcionó para mí.
answerSeeker
2

Ninguna de las otras soluciones funcionó para mí, así que esto fue después de un poco de búsqueda en otros sitios.

Debe ejecutar firefox en un proceso separado de la misma manera que lo haría si lo estuviera haciendo todo en la máquina local. Use el administrador de perfiles para crear un nuevo perfil de la siguiente manera.

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Para mantener las cosas consistentes, decidí nombrar cada nuevo perfil en la máquina externa igual que el nombre de host.

verayth
fuente
1

Navegación remota simple

Si desea navegar por la web localmente como si estuviera sentado frente a una caja remota:

$ ssh -X [email protected]

luego ejecute Firefox dentro de la sesión de terminal remota :

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

Observe el uso de la -Xbandera en el sshcomando. También puede realizar ambos pasos de una sola vez, como se muestra a continuación:

$ ssh -X [email protected] firefox http://test-ipv6.com/

Túnel de una IP remota: puerto

Si tiene una aplicación que se ejecuta de forma remota que expone algún tipo de interfaz web, le interesará exponer el puerto IP: remoto como si fuera un puerto IP local. En este caso, la -Lopción define una correspondencia entre localhost:localporty remotehost:remoteport, como se muestra en el pseudo comando a continuación:

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

Por ejemplo:

$ ssh -L 127.0.0.1:18080:internal.example.com:8080 [email protected]

luego ejecute Firefox localmente :

$ firefox http://127.0.0.1:18080

En el ejemplo anterior, se está conectando a través de SSH [email protected]y está interesado en una interfaz web expuesta en internal.example.com:8080. Esta IP remota: el puerto estará expuesto localmente en 127.0.0.1:18080.

Richard Gomes
fuente
0

Solo agregaré lo que funcionó para mí. Simplemente usando firefox -no-remotefalló con el error habitual

Error: GDK_BACKEND does not match available displays

Sin embargo, lo siguiente funcionó:

ssh -Y user@host
firefox -no-remote

La -Yopción habilita el reenvío X11 confiable. Los reenvíos X11 de confianza no están sujetos a los controles de extensión X11 SECURITY. También podría considerar agregar una -Copción al sshcomando para habilitar la compresión.

rahul1210
fuente