На машине, где Firefox будет работать и отображать (машина A), вам необходимо:
- Укажите, к какому X-серверу подключаться, например, установите DISPLAY =:0.0.
- Как-то аутентифицироваться на X-сервере. Самый простой способ - прочитать значение $ XAUTHORITY в сеансе X и использовать то же самое.
Например, в терминале в сеансе X выполните:
$ echo $XAUTHORITY
/var/run/gdm/auth-for-ambro-j3bu8Q/database
Затем из терминала SSH выполните то же действие, что и для сеанса X (в противном случае используйте su):
DISPLAY=:0.0 XAUTHORITY=/var/run/gdm/auth-for-ambro-j3bu8Q/database firefox http://stackoverflow.com
Вы можете получить значение $ XAUTHORITY, автоматически записанное где-нибудь при входе в систему. Например, создайте следующий скрипт ~/write-xauth (не забудьте chmod +x):
#!/bin/bash
touch "$HOME"/.saved-xauthority
chmod u=rw,g=,o= "$HOME"/.saved-xauthority
echo "$XAUTHORITY" > "$HOME"/.saved-xauthority
Затем создайте файл автозапуска, который запустит вышеуказанный скрипт, ~/.config/autostart/save-xauthority.desktop:
[Desktop Entry]
Type=Application
Name=Save XAUTHORITY to .saved-xauthority
Exec=/home/<type_user>/write-xauth
Terminal=false
X-KDE-StartupNotify=false
StartupNotify=false
Если у вас есть оболочка на машине B (машина, на которой Firefox не будет отображаться), вам просто нужно подключиться по SSH к машине A (на которой будет работать и будет отображаться Firefox) и запустить команду firefox, которую я разместил. Это можно автоматизировать в сценарий на компьютере B. Для аутентификации SSH на компьютере А. вам понадобятся ключи (а не пароль). Например, см. Https://wiki.archlinux.org/index.php/SSH_Keys. , Это позволит вам ssh неинтерактивно без ввода пароля. Теперь вы можете запускать команды на машине A с машины B, набрав:
ssh machineA command argument ...
В вашем случае вы, вероятно, захотите создать на машине A скрипт для открытия окна Firefox:
ssh machineA ./open_local_firefox http://whatever
И этот скрипт будет выглядеть примерно так:
#!/bin/bash
export DISPLAY=:0.0
export XAUTHORITY=$(cat "$HOME"/.saved-xauthority)
firefox "$1" &>/dev/null 2>&1 &
Стоит отметить, что эта настройка позволит машине B запускать что-либо на машине A как пользователь SSHing. Можно ограничить это, но это нелегко. Если вы хотите сделать это с SSH, опция ForceCommand sshd, вероятно, поможет.
Конечно, есть и другие способы сделать это, но все сводится к запуску команды «firefox» на компьютере A с правильными переменными среды (как показано выше) в качестве правильного пользователя. Например, вы можете настроить HTTP-сервер и скрипт на компьютере A, чтобы определенный запрос POST открывал это окно Firefox. Это, вероятно, легче обеспечить, чем подход SSH.