Переадресация X11 через SSH и su

Переадресация X11 через SSH и su

Для меня странно, что при использовании 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 .

Связанный контент