Jak uruchomić zdalne okno firefox przez SSH?

56

Kiedy przesyłam SSH do zdalnego urządzenia

$ ssh -X remotebox

następnie uruchom Firefoksa na zdalnym urządzeniu

remotebox$ firefox

i mam firefox działający na moim komputerze lokalnym, otworzy się lokalne okno firefox. na zdalnym urządzeniu nie działa żaden proces firefox.

Jeśli firefox nie działa na moim komputerze lokalnym, otworzy się okno zdalnego firefoxa.

Dlaczego otwiera lokalne okno Firefoksa? Jak mogę temu zapobiec?


Oto więcej informacji o moim systemie lokalnym.

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

Informacje o pilocie.

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

Następujące polecenie uruchamia zdalną sesję firefox ze zdalnym oknem firefox.

remotebox$ firefox -no-remote

Poniższe polecenie powoduje krótkie opóźnienie, a następnie wraca do monitu i pojawia się lokalne okno firefox. Brak programu firefox uruchomionego na pilocie.

remotebox$ firefox

Informacje o 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

Następujące polecenie w remotebox2 uruchamia zdalną sesję firefox zgodnie z oczekiwaniami.

remotebox2$ firefox

Nie wiem, dlaczego firefox na remotebox2 rozpoczyna sesję zdalną zamiast sesji lokalnej.

lesmana
źródło
Czy możemy pobrać zawartość $DISPLAYzmiennej zarówno na maszynie lokalnej, jak i zdalnej?
aperson
@aperson, zaktualizowane pytanie.
lesmana
Dzięki, $DISPLAYwydaje się , że to nie problem, ssh wydaje się poprawnie konfigurować.
aperson

Odpowiedzi:

46

poza tym jest firefox -no-remote inny parametr, firefox -no-xshmktóry ujawnia technikę zastosowaną do jego działania.

Pamięć współdzielona X11 to technika komunikacji międzyprocesowej, z której mogą korzystać wszystkie aplikacje podłączone do danej sesji x serwera. Można go używać do przeciągania i upuszczania oraz innego rodzaju interakcji na pulpicie.

Może być (i jest) wykorzystywany również do implementacji aplikacji „otwórz raz”, aby zmniejszyć powierzchnię (lub liczbę okien).

Ponieważ protokół X11 jest przezroczysty dla sieci, „pamięć współdzielona” zostaje rozszerzona również na zdalnych klientów X11.

ithkuil
źródło
Czy jest jakiś sposób, aby zmusić x tego nie robić? Chcę umieścić w kontenerach ustawienia gry wideo / wina w celu łatwej dystrybucji, ale powoduje to bóle głowy, ponieważ spowoduje nieokreślone zachowanie w zależności od tego, co użytkownik kontenera zainstalował i uruchomił. Korzystam z tego rozwiązania do przekazywania x: stackoverflow.com/a/25168483 i chciałbym po prostu upewnić się, że kontener nigdy nie współdzieli pamięci z hostem.
Sir Substance
Dla mnie to nie działa
Bob Ebert
Wypróbuj niższą sugestię: eksport MOZ_NO_REMOTE = 1
Kieveli
15

Próbować firefox -no-remote

Dennis Williamson
źródło
działa to przy otwieraniu zdalnego okna firefox. ale nadal nie rozumiem, dlaczego zdalne polecenie może uruchomić lokalne okno firefoxa.
lesmana
@lesmana może to być spowodowane przekierowaniem x11 - jeśli jest to ustawione w sshd_config, możesz mieć sytuację, w której jest wykonywany i tunelowany z powrotem.
Marco Ceppi
10

Uwaga: kopałem kopułę, ponieważ mnie to wkurzyło i możesz również dodać:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

do twojego profilu.

użytkownik2577
źródło
4

Możesz tego spróbować po podłączeniu do komputera ( ssh user@host; uwaga: bez opcji -X), najpierw wpisz polecenie follow

export DISPLAY=:0 

spowoduje to zmianę domyślnego wyświetlania na bieżący ekran pulpitu. A potem po prostu wpisz

firefox

, aby firefox pojawił się w oknie pulpitu. Upewnij się, że zalogowałeś się na pulpicie, bez którego (bez logowania) pojawi się następujący błąd;

firefox: cannot connect to X server :0

Ta metoda działa również w przypadku zablokowanych komputerów stacjonarnych. Upewnij się, że zalogowałeś się na pulpicie i powłoce ssh z tą samą nazwą użytkownika.

Gdy istnieje wiele sesje stacjonarne, każda sesja jest identyfikowany przez inną liczbę jako :0, :1, :2, itd.

josip b
źródło
To jedyna odpowiedź, która zadziałała dla mnie.
answerSeeker
2

Żadne inne rozwiązanie nie działało dla mnie, więc było to po odrobinie wyszukiwania na innych stronach.

Musisz uruchomić Firefoksa w osobnym procesie w taki sam sposób, jak gdybyś robił to wszystko na komputerze lokalnym. Użyj menedżera profili, aby utworzyć nowy profil w następujący sposób.

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Aby zachować spójność, postanowiłem nazwać każdy nowy profil na komputerze zewnętrznym taką samą nazwą hosta.

Verayth
źródło
1

Proste zdalne przeglądanie

Jeśli chcesz przeglądać Internet lokalnie, tak jakbyś siedział przed zdalnym urządzeniem:

$ ssh -X [email protected]

następnie uruchom Firefox w zdalnej sesji terminalowej :

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

Zwróć uwagę na użycie -Xflagi w sshpoleceniu. Możesz również wykonać oba kroki za jednym razem, jak pokazano poniżej:

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

Tunelowanie zdalnego portu IP:

Jeśli masz aplikację działającą zdalnie, która udostępnia interfejs sieciowy, będziesz zainteresowany ujawnieniem zdalnego portu IP: tak, jakby to był lokalny port IP:. W takim przypadku -Lopcja określa zgodność między localhost:localporti remotehost:remoteport, jak pokazano w pseudo poleceniu poniżej:

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

Na przykład:

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

następnie uruchom Firefox lokalnie :

$ firefox http://127.0.0.1:18080

W powyższym przykładzie łączysz się przez SSH [email protected]i jesteś zainteresowany frontendem internetowym widocznym na internal.example.com:8080. Ten zdalny port IP: zostanie ujawniony lokalnie pod adresem 127.0.0.1:18080.

Richard Gomes
źródło
0

Dodam tylko to, co dla mnie zadziałało. Po prostu użycie firefox -no-remotenie powiodło się ze zwykłym błędem

Error: GDK_BACKEND does not match available displays

Jednak następujące działały:

ssh -Y user@host
firefox -no-remote

-YOpcja umożliwia przekazywanie zaufaną X11. Zaufane przekazywanie X11 nie podlega kontrolom rozszerzenia X11 SECURITY. Można również rozważyć dodanie -Copcji do sshpolecenia włączania kompresji.

rahul1210
źródło