3

Я пытаюсь запустить открытую программу с графическим интерфейсом на удаленной машине с Ubuntu, используя ssh.

Я хочу открыть, скажем, Firefox или Skype, на машине, к которой я подключился через ssh. Но при записи входа в систему с user2 и записи sudo -u user1 firefox я получаю сообщение об ошибке, в котором не указано отображение.

Машина включена и вошла в систему с user1, просто кажется, что я не могу получить Ubuntu, чтобы признать, что есть доступный графический интерфейс.

Я не возражаю против альтернативных решений, но я бы предпочел помочь с этим конкретным сценарием.

3 ответа3

2

Установите X11Forwarding yes в файле конфигурации для SSH-сервера (/etc/ssh/sshd_config). Перезапустите сервер и запустите ssh на клиентском компьютере с параметром -X или -Y (это должно работать с OpenSSH).

0
dbus-launch firefox&

В прошлом это работало для меня из оболочки, вы можете попробовать через SSH.

0

Использование sudo немного усложняет ситуацию и потребует нескольких дополнительных шагов.

Если вы настроили ваш /etc /ssh /sshd_config, как уже упоминали другие

X11Forwarding yes

тогда ssh'n в коробку как user2 через

$ ssh -YC remote.example.com

Вы должны иметь возможность запускать удаленные приложения X от имени пользователя user2. Простой способ проверить это на многих системах на основе X - запустить

$ xlogo

Это очень легкий по сравнению с чем-то вроде Firefox, хотя Firefox будет работать также.

Если вы уверены, что X работает через ваше удаленное ssh-соединение как user2, мы можем заставить его работать с sudo для user1. Проблема в том, что когда вы выполняете sudo для user1, вы теряете полномочия на использование удаленной переадресации X. Чтобы обойти это, сначала как user2 выполните следующее после входа в систему

$ echo $DISPLAY
localhost:17.0
$ xauth list
<snip>
carlisle/unix:17  MIT-MAGIC-COOKIE-1  161bda5fc81200a4e74e578009177fb8

Вы должны увидеть строку, которая содержит тот же номер дисплея, в моем примере это 17. Вы хотите найти соответствующий номер в выводе списка xauth. Затем выполните sudo для user1 и выполните команду xauth add, чтобы добавить строку аутентификации, соответствующую приведенному выше.

$ sudo su - user1
$ xauth add carlisle/unix:17  MIT-MAGIC-COOKIE-1  161bda5fc81200a4e74e578009177fb8

Теперь вы сможете запускать любое приложение, которое захотите.

$ xlogo  # or any X app such as firefox 

Если вы получаете сообщение о невозможности заблокировать ~ user2/.Xauthority вам нужно будет настроить права доступа к этому файлу, прежде чем использовать sudo для переключения на user1. Это не совсем безопасно, но вы можете установить права доступа к файлу chmod 666 для этого файла для тестирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .