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.


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.


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


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.


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.


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.


1

Proste zdalne przeglądanie

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

$ ssh -X username@remote.example.com

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 username@remote.example.com 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 username@router.example.com

następnie uruchom Firefox lokalnie :

$ firefox http://127.0.0.1:18080

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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.