Больше не могу использовать X11 с ssh. Установлен XQuartz2.7.7. Вход с X11 через ssh выдает предупреждения
Предупреждение: не удалось установить ненадежную пересылку X11: данные ключа xauth не сгенерированы Предупреждение: данные xauth отсутствуют; используя поддельные данные аутентификации для пересылки X11.
В моей собственной системе echo $DISPLAY
дает
/private/tmp/com.apple.launchd.GuewxwWwKS/org.macosforge.xquartz:0
Однако, когда я пытаюсь xauth generate $DISPLAY . trusted
, я получаю ошибку
xauth: (argv): 1: неверное отображаемое имя "/private/tmp/com.apple.launchd.GuewxwWwKS/org.macosforge.xquartz:0" в команде "добавить"
Есть идеи как это исправить?
$DISPLAY
неверно. Это должно быть что-то вроде:0.0
. Как установить Вы$DISPLAY
в~/.bash_profile
или~/.profile
сами?-Y
опцию вместо-X
? Какую операционную систему использует ваш сервер? И еще: на Mac абсолютно нормально$DISPLAY
настроиться на что-то/tmp/
.DISPLAY=:0.0
, и это сработало. Я добавил это в свой .bash_profileОтветы:
ОБНОВИТЬ
Разработчик Джереми Хаддлстон Секвойя вчера объявил, что эта проблема решена в XQuartz 2.7.8_beta2 :
Отчет об ошибке закрыт и помечен как исправленный:
Если вы не можете (или не хотите) устанавливать бета-версию, вы все равно можете использовать обходной путь, который я объясню ниже.
ОТВЕТ
Анализ
(прокрутите вниз для обходного раздела)
Моей первой мыслью было «
DISPLAY
переменная неверна». Но это не так.Как выясняется, в OS X 10.10 Yosemite (и обратно в 10.8 Mountain Lion )
DISPLAY
переменная хранитlaunchd
путь к сокету:вместо привычного отображаемого имени:
(Я добавил некоторую информацию о
hostname:displaynumber.screennumber
формате в конце этого ответа.)Это означает, что
xauth
он должен знать, как обращаться с этим специальным воплощениемDISPLAY
переменной, и как и Маверикс, он это сделал, но сокет, используемый в Yosemite, имеет другой путь (точнее:/private/tmp/com.apple.launchd.XXXX
вместо/private/tmp/launch-XXXX
) иxauth
разрывается.Об этой ошибке сообщили команде XQuartz 18 ноября 2014 года (3 месяца назад) ( http://xquartz.macosforge.org/trac/ticket/2068 ):
В соответствии с описанием ошибки, она должна быть решена в XQuartz 2.7.8, который опаздывает на 4 месяца (см. Страницу плана проекта на http://xquartz.macosforge.org/trac/roadmap ).
Патч, исправляющий проблему, был зафиксирован 31 декабря 2014 года в проекте freedesktop.org ( http://cgit.freedesktop.org/xorg/app/xauth/commit/parsedpy.c?id=f990dd936b5fd1a40290bb88cde517a0ac38f823 ):
Так что это всего лишь вопрос времени, пока этот патч не войдет в следующую версию XQuartz.
Временное решение
(проверено на OS X 10.10.2 Yosemite.)
Добавлять:
чтобы
~/.bashrc
и либо начать новое окно терминала или источник его (. ~/.bashrc
) в текущем терминале сессии.Этот псевдоним сначала символически связывает путь сокета
/private/tmp/launch-XXX
(напримерln -fs /private/tmp/com.apple.launchd.GuewxwWwKS /private/tmp/launch-GuewxwWwKS
), а затем запускаетсяssh
:Для любопытных, традиционно, отображаемое имя X-сервера имеет такую форму (из
man X
Ubuntu): Отображаемое имя X-сервера имеет такую форму:где:
источник