Come posso avviare una finestra firefox remota tramite SSH?


56

Quando SSH su una casella remota

$ ssh -X remotebox

quindi avviare firefox sulla casella remota

remotebox$ firefox

e ho Firefox in esecuzione sul mio computer locale, si aprirà una finestra di Firefox locale. nessun processo di Firefox è in esecuzione sulla scatola remota.

Se Firefox non è in esecuzione sul mio computer locale, si aprirà una finestra remota di Firefox.

Perché sta aprendo una finestra Firefox locale? Come posso impedirlo?


Ecco qualche informazione in più sul mio sistema locale.

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

Informazioni di 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

Il seguente comando avvia una sessione firefox remota con una finestra firefox remota.

remotebox$ firefox -no-remote

Il comando seguente produce un breve ritardo, quindi torna al prompt e viene visualizzata una finestra di Firefox locale. Nessun processo firefox in esecuzione sul remotebox.

remotebox$ firefox

Informazioni di 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

Il seguente comando su remotebox2 avvia una sessione firefox remota come previsto.

remotebox2$ firefox

Non so perché firefox su remotebox2 avvii una sessione remota anziché una sessione locale.


Possiamo ottenere il contenuto della $DISPLAYvariabile sia sul computer locale che su quello remoto?
aperson,

@aperson, domanda aggiornata.
lesmana,

Grazie, il $DISPLAYnon sembra essere un problema, sembra che ssh stia sistemando le cose correttamente.
aperson,

Risposte:


46

inoltre firefox -no-remote un altro parametro è firefox -no-xshmche rivela la tecnica utilizzata per farlo funzionare.

La memoria condivisa X11 è una tecnica di comunicazione tra processi che può essere utilizzata da tutte le applicazioni connesse a una determinata sessione x server. Può essere utilizzato per eseguire il trascinamento della selezione e altri tipi di interazione desktop.

Può essere (ed è) utilizzato anche per implementare applicazioni "open once", al fine di ridurre il footprint (o il numero di finestre).

Poiché il protocollo X11 è trasparente in rete, la "memoria condivisa" viene estesa anche ai client X11 remoti.


C'è un modo in cui posso fare x non farlo? Sto cercando di containerizzare un videogioco / installazione di vino per una facile distribuzione, ma questo mi sta causando mal di testa, perché causerà un comportamento non specificato a seconda di ciò che l'utente del contenitore ha installato e in esecuzione. Sto usando questa soluzione per eseguire l'inoltro x: stackoverflow.com/a/25168483 e vorrei semplicemente assicurarmi che il contenitore non condividesse mai la memoria con l'host.
Sir Substance

Non funziona per me
Bob Ebert

Prova il suggerimento più basso: export MOZ_NO_REMOTE = 1
Kieveli

15

Provare firefox -no-remote


funziona nell'aprire una finestra remota di Firefox. ma ancora non capisco perché un comando remoto possa attivare l'apertura di una finestra Firefox locale.
lesmana,

@lesmana questo potrebbe essere dovuto all'inoltro di x11 - se questo è installato in sshd_configpotresti avere una situazione in cui viene eseguito e tunnel attraverso di nuovo.
Marco Ceppi

10

Nota, ho scavato una cupola in quanto questo mi infastidiva e puoi anche aggiungere:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

al tuo profilo.


4

Puoi provare questo, quando ti sei connesso alla macchina ( ssh user@host; nota: senza l'opzione -X), prima digita il comando follow

export DISPLAY=:0 

questo cambierebbe la visualizzazione predefinita a quella della schermata del desktop corrente. E poi basta digitare

firefox

per far comparire firefox sulla finestra del desktop. Assicurati di aver effettuato l'accesso al desktop, senza il quale (nessun accesso) otterrai il seguente errore;

firefox: cannot connect to X server :0

Questo metodo funzionerebbe anche per desktop bloccati. Assicurati di aver effettuato l'accesso sul desktop e la shell ssh con lo stesso nome utente.

Quando vi sono più sessioni desktop, ogni sessione è identificato da un numero diverso come :0, :1, :2, etc.


Questa è l'unica risposta che ha funzionato per me.
risposta Cercatore

2

Nessuna delle altre soluzioni ha funzionato per me, quindi questo è stato dopo un po 'di ricerche su altri siti.

Devi eseguire Firefox in un processo separato come faresti se stessi facendo tutto sul computer locale. Utilizzare il gestore profilo per creare un nuovo profilo come segue.

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Per mantenere le cose coerenti, ho deciso di nominare ogni nuovo profilo sulla macchina esterna come il nome host.


1

Navigazione remota semplice

Se desideri navigare sul Web localmente come se fossi seduto di fronte a una casella remota:

$ ssh -X username@remote.example.com

quindi esegui Firefox nella sessione del terminale remoto :

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

Si noti l'uso di -Xflag nel sshcomando. Puoi anche eseguire entrambi i passaggi in una sola volta, come mostrato di seguito:

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

Tunneling di un IP remoto: porta

Se hai un'applicazione in esecuzione in remoto che espone una sorta di frontend Web, ti interesserà esporre l'IP remoto: porta come se fosse un IP locale: porta. In questo caso, l' -Lopzione definisce una corrispondenza tra localhost:localporte remotehost:remoteport, come mostrato nello pseudo comando seguente:

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

Per esempio:

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

quindi esegui Firefox localmente :

$ firefox http://127.0.0.1:18080

Nell'esempio sopra, ci si connette tramite SSH su username@router.example.come si è interessati a un frontend Web esposto a internal.example.com:8080. Questo IP remoto: la porta sarà esposta localmente a 127.0.0.1:18080.


0

Aggiungerò solo ciò che ha funzionato per me. Semplicemente usando firefox -no-remotefallito con il solito errore

Error: GDK_BACKEND does not match available displays

Tuttavia, ha funzionato:

ssh -Y user@host
firefox -no-remote

L' -Yopzione abilita l'inoltro X11 affidabile. Gli inoltri X11 affidabili non sono soggetti ai controlli dell'estensione X11 SECURITY. Potresti considerare di aggiungere -Cun'opzione al sshcomando anche per abilitare la compressione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.