Что означает «Предупреждение: не удалось установить ненадежную пересылку X11: данные ключа xauth не сгенерированы» при ssh'ing с -X?

134

Когда я использую ssh -Xна своем Mac (под управлением OS X 10.6.7) подключение к моему Ubuntu (11.04), я получаю следующее предупреждение:

Предупреждение: не удалось установить ненадежную пересылку X11: данные ключа xauth не сгенерированы Предупреждение: данные xauth отсутствуют; используя поддельные данные аутентификации для пересылки X11.

Что я могу сделать, чтобы это предупреждение исчезло? Если нет, могу ли я спокойно проигнорировать это?

Пересылка X11, кажется, работает нормально, хотя я вижу это сообщение:

Xlib: расширение «RANDR» отсутствует на дисплее «localhost: 10.0».

Это связано с предупреждением? (Наверное, нет. Если это не так, я задам новый вопрос об этом.)

Дэрил Спитцер
источник
1
Программа xauth установлена ​​на сервере ubuntu?
slubman
sudo apt-get install xauthговорит мне, что «xauth - это самая новая версия»
Дэрил Спитцер,
Когда вы входите в систему на сервере Ubuntu, что выдает «which xauth»?
slubman
Действительно, я думаю, что вы должны прочитать это объяснение: mail-archive.com/cygwin-xfree@cygwin.com/msg17927.html ... вы можете проигнорировать это предупреждение
slubman
2
иногда это может быть вызвано проблемами с вашим файлом ~ / .Xauthority. Если вы удалите его, он будет воссоздан при следующей попытке входа в систему.
Майкл

Ответы:

145

По какой причине вы не хотите использовать флаг -Y вместо флага -X?

Проще говоря, разница между -X и -Y заключается в том, что -Y включает надежную пересылку X11.

user5336
источник
4
Нет, я просто не знал о флаге -Y, когда писал вопрос. Я считаю, что это оказалось решением. Измените свой ответ, чтобы он не был вопросом (и было бы неплохо, если бы вы кратко объяснили разницу между -Y и -C), и я приму его.
Дэрил Спитцер
есть ли случай, когда вы не захотите использовать -Y вместо -X?
Петух
@ Петух для очень старых систем, где -Y не поддерживается, я бы сказал
Петр
Совет по устранению неполадок: запустите "ssh -vv ..." и найдите строку xauth и все сообщения об ошибках. Вы можете попробовать запустить строку xauth, которую он показывает напрямую. Для моего мне нужно, чтобы это было что-то вроде «xauth list: 0» (доверенный), а не «xauth -f / tmp / ssh ... list: 0» (ненадежный). Что -Y исправлено и "ForwardX11Trusted yes" на удаленном хосте / etc / ssh / ssh_config (или ~ / .ssh / config) также исправлено.
Кертис
Это решение также работало с Cygwin / X.
linux64kb
25

Если вы приедете сюда в 2015 году: даже если все остальное настроено правильно, это также может произойти в Mac OS X 10.10 Yosemite, при использовании ssh -Xи запуске версии XQuartz <= 2.7.7. Основная причина заключается в том, что экранные сокеты X11 записываются вне пути поиска xauth: проблема # 2068 в трекере XQuartz.

Редактировать: исправленный XQuartz был выпущен на новой домашней странице, xquartz.org , и установка последней версии оттуда (в настоящее время 2.7.9) поможет обойти эту проблему.

Уилл Энгли
источник
1
Спасибо! Я понятия не имел, что XQuartz, который я только что загрузил с верхней части страницы XQuartz, на самом деле не является последней версией.
Крейгдс
Стоит отметить, что в brew install xquartzнастоящее время устанавливается устаревшая версия 2.7.7.
Мартин Кливер
brew install Caskroom/cask/xquartzдолжен получить вам последний XQuartz с HomeBrew
Ник
Или короче brew cask install xquartz.
Франклин Ю,
17

Если вы получаете то же сообщение даже при использовании -Y, xauthпрограмма может отсутствовать на сервере. В Debian-подобных системах вам нужен xauthпакет. В RedHat-подобных системах вам нужен xorg-x11-xauthпакет.

Flup
источник
15

«Ненадежный» в этом контексте означает, что вы не доверяете соединению. SSH будет использовать дополнительные меры безопасности, чтобы попытаться сделать пересылку X11 более безопасной. «Доверенный» означает, что вы абсолютно уверены, что никто на удаленном хосте не получит доступ к вашим данным Xauth и будет использовать его, например, для отслеживания нажатий клавиш.

Эта терминология фактически смущала меня годами. Я думал, что «Надежные» соединения были безопаснее. Но на самом деле это вариант, который вы должны использовать в ситуациях, когда соединение заслуживает доверия, и вы хотите запускать вещи без дополнительных мер безопасности, мешающих вам. «Ненадежный» - это тот, который делает (несколько) более безопасным работу с ненадежным удаленным хостом.

«Ненадежное» соединение пытается ограничить то, что черная шляпа может сделать для вас, задействовав расширение безопасности X11 и отключив другие расширения, которые вам (надеюсь) не нужны. Вероятно, поэтому RandR отключен с помощью -X. Нужно ли вам иметь возможность вращать X-дисплей с удаленного хоста?

Также важно отметить, что «ненадежная» переадресация X11 отключается через определенное время, чтобы вы не могли случайно оставить его включенным. Новые попытки открыть окна после этого просто потерпят неудачу. Это укусило меня несколько раз, прежде чем я прочитал достаточно документов, чтобы понять, что происходит.

Tetsujin
источник
9

У меня нет установки, которая может демонстрировать это поведение, так что это выстрел в темноте:

Предупреждение может быть подавлено , если вы установите ForwardX11Trustedна "no"для хостов , которые дают предупреждение. Вы можете поместить это в или ~/.ssh/configили /etc/ssh/ssh_config, и вы можете сделать опцию, специфичную для конкретного хоста, включив Host <hostname>в строку выше. <hostname>компонент соответствует тому , что вы вводите в командной строке (не разрешенное имя хоста), и он может включать в себя групповые символы.

Майкл Лоуман
источник
Можно использовать ssh -Yдля доверенной пересылки X11, но как исправить ненадежную?
Павел Шимерда
Я получил ту же ошибку в Redhat, и теперь я могу решить ее, отредактировав файл конфигурации /etc/ssh/ssh_configна стороне клиента. Спасибо
Гангадхар Джанну
7

ОСТЕРЕГАЙТЕСЬ (надоело читать неполные ответы, которые приводят к недостатку безопасности)

1 / использование ssh -Y означает наличие поддельной информации о xauth, что плохо!

2 / ssh -X должен работать, так как XQuartz, когда он включен, использует xauth. Единственная проблема в том, что ssh ищет xauth в / usr / X11R6 / bin, а на macos с XQuartz он находится в / opt / X11 / bin

Безопасное решение:

1 / Включите первую опцию на вкладке « Безопасность » в настройках (Cmd-,), которая включает аутентифицированные соединения

2 / добавить

XAuthLocation /opt/X11/bin/xauth

в $ HOME / .ssh / config

3 / ssh -X you_serverработает в безопасном месте

Koko
источник
6

Если установка xauthне работает должным образом, один особенно раздражающий случай мог быть поврежденным .Xauthorityфайлом. Этот конкретный случай позволил некоторым X-клиентам работать, но не другим, у которых более высокая тенденция к сбою с новыми дисплеями. Удаление и воссоздание .Xauthorityфайла может решить эту проблему.

hildred
источник
6

Исключите проблемы на стороне сервера

Во-первых, вы должны исключить любые проблемы на стороне сервера. Вы можете ssh -Xуспешно с любого другого хоста? Работает, ssh -Yпока ssh -Xнет? В любом случае предположим, что ssh + X11 правильно настроен на вашем сервере и перейдите к следующему разделу.

Если вы не можете это проверить (скажем, у вас есть только один ноутбук с X11), вы можете sshперейти с сервера на себя, используя поддельный сеанс:

  1. export DISPLAY=:44# (Оболочка Bourne) или
    setenv DISPLAY :44# (csh / tcsh)
  2. xauth add $DISPLAY MIT-MAGIC-COOKIE-1 1234 # Фальшивое печенье только для этого теста
  3. ssh -X localhost env |grep DISPLAY

Ожидаемый результат: переменная DISPLAY должна быть установлена ​​на удаленном конце сеанса ssh-to-self. Если вы не получите никакого результата, ваш сервер, вероятно, неправильно настроен (например, библиотеки X11 и / или xauthкоманда могут отсутствовать; или в конфигурации sshd может быть отказано в доступе к X11)

На Mac: убедитесь, что Xquartz обновлен

Согласно ответу Уилла Энгли

Изучить ssh -vv -Xвыход

Приведенное вами сообщение об ошибке является симптомом, который может иметь много причин. Попробуйте еще раз , что даст вам дополнительные сведения о том, почему не удалось установить туннель X11.ssh -X -vv remotehost

Вы видите следующее сообщение?

debug1: нет программы xauth.
Если так,

  1. Обратите внимание, где в вашей клиентской системе находится xauthкоманда:
    какой хаут
  2. Добавьте следующее в самом конце вашего ~ / .ssh / config (и добавьте комментарий, чтобы напомнить себе, чтобы сохранить его там в будущем):
    Хост *
        XAuthLocation / opt / X11 / bin / xauth
    
    Отрегулируйте этот путь в соответствии с выводами шага 1 - Кредиты Ян-Виллему Арнольду
DomQ
источник
3

Как уже было объяснено выше, у меня сработало следующее:

Отредактируйте ~ / .ssh / config, чтобы добавить строки

Host *
    XAuthLocation /opt/X11/bin/xauth

и теперь ssh -X hostname работает (XQuartz 2.7.11, macOS 10.4 Mojave)

shepster
источник
0

У меня уже была установлена ​​последняя версия XQuartz 2.7.11, но я думаю, что с тех пор я также несколько раз обновлял ОС. Я переустановил XQuartz 2.7.11, и теперь он работает нормально.

Ульмо
источник
-3

xauth add `hostname` / unix: 10 MIT-MAGIC-COOKIE-1` openssl rand -hex 16`

Марк Уильямс
источник
1
Я не понимаю ...
Pierre.Vriens