Как запустить удаленное окно 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переменной как на локальной, так и на удаленной машине?
2010 года

@aperson, обновленный вопрос.
Lesmana

Спасибо, $DISPLAYпохоже, это не проблема, похоже, ssh все настраивает правильно.
2010 г.

Ответы:


46

кроме того, firefox -no-remote другой параметр, firefox -no-xshmкоторый показывает технику, используемую, чтобы заставить его работать.

Общая память X11 - это метод межпроцессного взаимодействия, который может использоваться всеми приложениями, подключенными к данному сеансу x-сервера. Его можно использовать для перетаскивания и других видов взаимодействия с рабочим столом.

Он может быть (и используется) также для реализации приложений «открыть один раз», чтобы уменьшить занимаемую площадь (или количество окон).

Поскольку протокол X11 прозрачен для сети, «разделяемая память» распространяется и на удаленные клиенты X11.


Можно ли как-то заставить х не делать этого? Я ищу контейнеры для видеоигр / вин для настройки, но это вызывает у меня головную боль, потому что это приведет к неопределенному поведению в зависимости от того, что пользователь контейнера установил и запустил. Я использую это решение для x forwarding: 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), сначала введите следующую команду

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.