Предположим, вы хотите грубой силой установить связь с Х ...
Предположим, что вы уже выполняете свои команды на сервере (где работает X), иначе заставьте это работать сначала, а затем используйте 'ssh -X user @ server) от клиента;).
Существует несколько способов запуска команд xauth, например, вы можете использовать sudo, но это может привести к потере или изменению переменных среды. Следующие переменные среды должны быть сохранены: DISPLAY и XAUTHORITY. Чтобы проверить, так ли это, вы можете запустить 'echo $ XAUTHORITY' так же, как вы запускаете свои команды, но убедитесь, что вы не расширяете переменные окружения, прежде чем выполнять эти команды. Например, попробуйте: sudo bash -c 'echo "$ XAUTHORITY"', чтобы увидеть, что на самом деле представляет собой XAUTHORITY после запуска sudo (если он исчезнет, вам может понадобиться добавить что-то в файл sudoers, см. В другом месте).
В конце концов, запустите следующую команду как пользователь, с которым вы хотите получить доступ, на сервере:
xauth info
Это покажет «файл авторизации», который будет использоваться (/root/.Xauthority по умолчанию, для root или что-то вроде /home/theuser/.Xauthority). Если он показывает правильный файл .Xauthority, тогда вам не нужно беспокоиться о переменной среды XAUTHORITY (на самом деле, я не знаю, когда это произойдет, за исключением случаев, когда вы хотите манипулировать нестандартным местом этого файла ).
Удалите этот файл (если он вообще существует):
rm /root/.Xauthority
Замените /root/.Xauthority
файл XAUTHORITY на ваш случай.
Создайте его заново, но пусто (это необходимо для большого количества команд):
touch /root/.Xauthority
На этом этапе вы получите сообщение об отсутствии протокола , даже если вы получили Invalid MIT-MAGIC-COOKIE-1 ранее. Найдите файл авторизации, который X-сервер использует в данный момент:
ps aux | grep Xorg
Это должно показать что-то вроде:
root 1153 0.0 1.0 149560 44464 tty7 Ss+ dec02 0:00 /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711} -background none -noreset -displayfd 17 vt7
Имя файла после -auth
- это то, что вам нужно в следующей команде. Запустите это как root:
sudo xauth -f '/var/run/sddm/{ef18c483-7891-4e82-80ef-2c8f9bd79711}' list
Это перечисляет 32-значный шестнадцатеричный ключ. Например, вывод может быть:
hostname/unix:0 MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
Используйте это, чтобы сгенерировать ваш файл .Xauthority (как пользователь, которому нужно снова войти):
xauth add $DISPLAY MIT-MAGIC-COOKIE-1 c0eaf749aa252101a0f57d5087089db7
замените 'c0eaf749aa252101a0f57d5087089db7' тем, что было возвращено командой list для вас. Теперь ваш .Xauthority должен иметь размер 51 байт, и вы можете подключиться к X-серверу (снова).