
Для меня странно, что при использовании ssh-подключения с переадресацией X11 пользователь и root могут видеть xclock
, а другой пользователь не может этого видеть. Почему?
mahmood@cluster:~$ xclock
^C
mahmood@cluster:~$ su
Password:
root@cluster:mahmood# xclock
^C
root@cluster:mahmood# su - hmousavi
hmousavi@cluster:~$ xclock
MobaXterm X11 proxy: Authorisation not recognised
Error: Can't open display: localhost:10.0
hmousavi@cluster:~$
PS: ^C
означает, что я смог увидеть xclock
окно, поэтому нажал, ^C
чтобы вернуться в терминал.
решение1
Для подключения к дисплею X11 требуются два вида информации: имя дисплея (обычно передается в DISPLAY
переменной среды) ипеченье, который является паролем для дисплея, который каждое приложение должно показывать при подключении. Обычно файл cookie хранится в ~/.Xauthority
, но он может храниться в другом файле, указанном XAUTHORITY
переменной окружения.
Похоже, что значение, DISPLAY
заданное SSH, было сохранено двумя вызовами su
. Однако файл cookie находится в ~mahmood/.Xauthority
; когда вы запускаете программу как hmousavi, программа ищет файл cookie в ~hmousavi/.Xauthority
и находит другое значение.
В принципе, вы могли бы запустить XAUTHORITY=~mahmood/.Xauthority xclock
, но hmousavi, по-видимому, не имеет разрешения на чтение этого файла — файл .Xauthority
не должен быть доступен для чтения другим пользователям. Вы можете использовать команду xauth
дважды, один раз как mahmood для извлечения значения cookie ( xauth list localhost:10.0
) и один раз как hmousavi для импорта этого значения ( xauth merge
), но это громоздко. Самый простой способ заставить приложения X11 работать — использовать SSH полностью, потому что SSH автоматически настраивает переадресацию X11:
mahmood@cluster:~$ ssh -X hmousavi@localhost
hmousavi@cluster:~$ xclock
.ssh/authorized_keys
Чтобы разрешить это, добавьте открытый ключ SSH Махмуда к ключу hmousavi .