Як запустити віддалене вікно Firefox через SSH?


56

Коли я SSH у віддалений ящик

$ ssh -X remotebox

потім запустіть firefox на віддаленому вікні

remotebox$ firefox

і у мене на моїй локальній машині працює Firefox, відкриється вікно місцевого Firefox. на віддаленій коробці не працює жоден процес Firefox.

Якщо Firefox не працює на моїй локальній машині, тоді відкриється віддалене вікно firefox.

Чому він відкриває місцеве вікно Firefox? Як я можу запобігти цьому?


Ось додаткова інформація про мою локальну систему.

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

Інформація про віддалену скриньку.

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

Наступна команда починає віддалений сеанс Firefox з віддаленим вікном firefox.

remotebox$ firefox -no-remote

Наступна команда створює невелику затримку, після чого відкидається на підказку, і з'являється вікно місцевого Firefox. На віддаленій скриньці не працює жоден процес Firefox.

remotebox$ firefox

Інформація 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

Наступна команда на remotebox2 запускає сеанс віддаленого Firefox, як очікувалося.

remotebox2$ firefox

Я не знаю, чому Firefox на remotebox2 починає віддалений сеанс замість локального сеансу.


Чи можемо ми отримати зміст $DISPLAYзмінної як на локальній, так і на віддаленій машині?
аперсон

@aperson, оновлене запитання.
lesmana

Дякуємо, $DISPLAYце, здається, не є проблемою, схоже, ssh правильно налаштовує речі.
аперсон

Відповіді:


46

окрім firefox -no-remote іншого параметра, firefox -no-xshmякий розкриває техніку, яка використовується для її роботи.

Загальна пам'ять X11 - це міжпроцесорна комунікаційна техніка, яка може використовуватися всіма програмами, підключеними до даного сеансу x сервера. З його допомогою можна виконувати перетягування та інші види взаємодії на робочому столі.

Він може (і використовується) також для реалізації додатків "відкрити один раз", щоб зменшити слід (або кількість вікон).

Оскільки протокол X11 є мережевим прозорим, "спільна пам'ять" поширюється також на віддалені клієнти X11.


Чи можна зробити так, щоб я не робив цього? Я прагну встановити контейнер для налаштування відеоігор / вина для легкого розповсюдження, але це заподіює мені головний біль, оскільки це спричинить невказану поведінку залежно від того, що встановлено та працює користувач контейнера. Я використовую це рішення для переадресації x: stackoverflow.com/a/25168483 і хотів би просто переконатися, що контейнер ніколи не ділиться пам'яттю з хостом.
Сер-субстанція

Для мене це не працює
Боб Еберт

Спробуйте нижчу пропозицію: експортувати MOZ_NO_REMOTE = 1
Kieveli

15

Спробуйте firefox -no-remote


це працює у відкритті віддаленого вікна Firefox. але я все ще не розумію, чому віддалена команда може викликати відкриття вікна локального Firefox.
lesmana

@lesmana це може бути пов’язано з перенаправленням x11 - якщо це встановлено у sshd_configвас, у вас може виникнути ситуація, коли воно виконується і тунель назад.
Марко Чеппі

10

Зауважте, я робив купольний копання, оскільки це клопоче мене, і ви також можете просто додати:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

до вашого профілю.


4

Ви можете спробувати це, коли ви підключились до машини ( ssh user@host; примітка: без параметра -X), спочатку введіть команду follow

export DISPLAY=:0 

це змінить дисплей за замовчуванням на такий на поточному екрані робочого столу. А потім просто наберіть

firefox

щоб Firefox породив вікно робочого столу. Переконайтеся, що ви увійшли на робочий стіл, без якого (без входу в систему) ви отримаєте таку помилку;

firefox: cannot connect to X server :0

Цей метод також працює для заблокованих робочих столів. Переконайтеся, що ви увійшли на робочий стіл та оболонку ssh з тим самим іменем користувача.

Коли є кілька сеансів робочого столу, кожен сеанс ідентифікується іншим числом , як :0, :1, :2і т.д.


Це єдина відповідь, яка працювала на мене.
відповідьПереглядач

2

Жодне з інших рішень для мене не працювало, тому це було після невеликого пошуку на інших сайтах.

Вам потрібно запустити Firefox в окремому процесі так само, як і коли б ви робили це на локальній машині. Використовуйте менеджер профілів, щоб створити новий профіль наступним чином.

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Щоб зберегти послідовність дій, я вирішив назвати кожен новий профіль на зовнішній машині таким же, як ім'я хоста.


1

Простий віддалений перегляд

Якщо ви хочете переглядати Інтернет на локальному рівні, ніби ви сидите перед віддаленою скринькою:

$ ssh -X username@remote.example.com

потім запустіть Firefox всередині сеансу віддаленого терміналу :

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

Зауважте використання -Xпрапора в sshкоманді. Ви також можете зробити обидва кроки за один раз, як показано нижче:

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

Тунелювання віддаленого IP: порту

Якщо у вас є програма, що працює дистанційно, яка відкриває якийсь веб-інтерфейс, вам буде цікаво відкрити віддалений порт IP: як би це локальний порт IP: У цьому випадку -Lпараметр визначає відповідність між localhost:localportта remotehost:remoteport, як показано в псевдо команді нижче:

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

Наприклад:

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

потім запустіть Firefox локально :

$ firefox http://127.0.0.1:18080

У наведеному вище прикладі ви підключаєтесь через SSH username@router.example.com, і вас цікавить веб-інтерфейс, оголений на internal.example.com:8080. Цей віддалений порт IP: буде відкрито локально на 127.0.0.1:18080.


0

Я просто додам те, що працювало на мене. Просто використання firefox -no-remoteне вдалося зі звичайною помилкою

Error: GDK_BACKEND does not match available displays

Однак працювало наступне:

ssh -Y user@host
firefox -no-remote

Цей -Yпараметр дозволяє надійне перенаправлення X11. Довірені переадресації X11 не підлягають контролю розширення X11 SECURITY. Ви можете розглянути -Cможливість додавання sshкоманди до команди для ввімкнення стиснення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.