Как запустить удаленное окно Firefox через SSH?

Когда я 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 запускает удаленный сеанс вместо локального сеанса.

7 ответов

Решение

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

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

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

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

Пытаться firefox -no-remote

Заметьте, я занимался копанием куполов, так как это меня беспокоило, и вы также можете просто добавить:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

в ваш профиль.

Простой удаленный просмотр

Если вы хотите просматривать веб-страницы локально, как если бы вы сидели перед удаленной коробкой:

$ 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,

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

export DISPLAY=:0 

это приведет к изменению отображения по умолчанию на отображение текущего экрана рабочего стола. А потом просто наберите

firefox

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

firefox: cannot connect to X server :0

Этот метод будет работать и для заблокированных рабочих столов. Убедитесь, что вы вошли на рабочий стол и в оболочку ssh с тем же именем пользователя.

При наличии нескольких сеансов рабочего стола каждый сеанс идентифицируется другим номером как :0, :1, :2, так далее.

Ни одно из других решений не помогло мне, так что это было после небольшого поиска на других сайтах.

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

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Чтобы все было согласованно, я решил присвоить каждому новому профилю на внешнем компьютере имя, совпадающее с именем хоста.

Я просто добавлю, что сработало для меня. Просто используя 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 команда для включения сжатия.

Другие вопросы по тегам