Как я могу предотвратить предупреждение Нет данных xauth; использовать поддельные данные аутентификации для пересылки X11?

66

Каждый раз, когда я запускаю ssh-соединение с моего Mac на Linux (Debian), я получаю это предупреждение:

No xauth data; using fake authentication data for X11 forwarding.

Это также происходит с инструментами, использующими ssh, такими как git или mercurial.

Я просто хочу внести локальные изменения в мою систему, чтобы это не появлялось.

Примечание: у меня есть сервер X11 (XQuartz 2.7.3 (xorg-server 1.12.4)) на моей Mac OS X (10.8.1), и он работает правильно, я могу успешно запускать часы локально или удаленно.

Сорин
источник
1
Какую команду вы используете для SSH?
DerfK
@DerfK просто, ssh hostnameно по моему ~/.ssh/configя добавил ForwardX11 yesнекоторое время назад. Тем не менее это то, что я хочу иметь там.
сорин
Использование Ubuntu 16.04 LTS (август 2017 г.) Я сдаюсь. Суть в том, что хотя это и дает ошибку, оно работает. Я использую ssh -Y hostnameиз Linux, и ssh -x hostnameпри использовании OpenSSH на Windows.
SDsolar

Ответы:

66

Ни одно из опубликованных решений не сработало для меня. Моя клиентская (настольная) система работает под управлением macOS 10.12.5 (Sierra). Я добавил -vв опции для sshкоманды, и она сказала мне,

debug1: No xauth program.

это означает, что у него нет правильного пути к xauthпрограмме. (В этой версии macOS путь к xauthявляется нестандартным.) Решением было добавить эту строку в /etc/ssh/ssh_config(может быть /etc/ssh/configв некоторых настройках) или в ~/.ssh/config(если у вас нет прав администратора):

XAuthLocation /opt/X11/bin/xauth

Теперь предупреждающее сообщение исчезло.

nmgeek
источник
10
О, МОЙ БОГ. Годы я пытался найти решение, и это сработало. Лет говорю! Обратите внимание, что я сделал это, добавив эту строку под Host *записью в моем ~/.ssh/configфайле вместо редактирования /etc/ssh/ssh_config. Единственная документация, которую я нашел для этого, была в man sshd_config.
Демитри
Это сработало и для меня. Я понимаю, что в настоящее время XQuartz не обслуживается из-за отсутствия финансирования. Так что я думаю, что таких вопросов портирования на самом деле меньше, чем я ожидал.
AlanObject
На высокой Сьерре; это тот, который работал для меня тоже.
mklein9
1
Обратите внимание, что вы можете столкнуться с этой проблемой, даже если ваша оболочка может найти xauth в вашей переменной PATH! Я полагаю, клиент ssh очищает ваш PATH по соображениям безопасности?
марта
1
Это решение не сработало для меня. Я использую Cygwin на Win7. Добавление «XAuthLocation / usr / bin / xauth» либо в запись «Host *», либо перед этой строкой в ​​~ / .ssh / config не имеет значения.
Дэвид М. Карр
22

Нашел причину, моя ~/.ssh/configбыла неполной, нужно и то и другое

Host *
    ForwardAgent yes
    ForwardX11 yes

Моя ошибка заключалась в том, что я включил только опцию ForwardX11.

Сорин
источник
12
Я не уверен, почему это необходимо / актуально. ForwardAgentиспользуется, чтобы позволить кешированным ключам ssh-agentпроходить через несколько вложенных SSH-соединений. Это не должно иметь никакого отношения к X11. И, кстати, некоторые считают, что это не очень хорошая идея с точки зрения безопасности: heipei.github.io/2015/02/26/…
underscore_d
2
Это звучит неправильно, что помогает на самом деле отключить пересылку X11 или исправить конфигурацию xauth для ее настройки. Это не относится к агентам ssh.
Eckes
Это решение не сработало для меня.
Дэвид М. Карр
Это ~/.ssh/configна клиенте macOS или на сервере Linux? У меня нет этих файлов ни на одном. У меня есть подобное/etc/ssh/sshd_config
Макс Коплан
13

Запуск Ubuntu bash в Windows 10 ssh -X для получения среды графического интерфейса на удаленном сервере.

  • Первый

Установите все следующее. В окне установите Xming. В Ubuntu bash используйте sudo apt installдля установки ssh xauth xorg.

sudo apt install ssh xauth xorg
  • второй

Зайдите в папку с ssh_configфайлом, мой есть /etc/ssh.

  • Третий

Изменить ssh_configкак администратор (USE sudo). Внутри ssh_config, удалить хэш #в строках ForwardAgent, ForwardX11, ForwardX11Trustedи установить соответствующие аргументы yes.

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
  • вперед

В ssh_configфайле удалите передний хеш #до Port 22и Protocol 2, а также добавьте новую строку в конце файла, чтобы указать местоположение файла xauth, не XauthLocation /usr/bin/xauthзабудьте написать свой собственный путь к файлу xauth.

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocation /usr/bin/xauth
  • пятый

Теперь, когда мы закончили редактирование ssh_configфайла, сохраните его, когда мы покинем редактор. Теперь перейдите в папку ~или $HOMEдобавьте export DISPLAY=localhost:0в свой .bashrcфайл и сохранить его.

# ~/.bashrc
...
...
export DISPLAY=localhost:0
  • Прошлой

Мы почти закончили. Перезапустите оболочку bash, откройте свою Xmingпрограмму и используйте ssh -X yourusername@yourhost. Тогда наслаждайтесь средой GUI.

ssh -X yourusername@yourhost

Проблема также в подсистеме Ubuntu на Windows, и ссылка на

https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776

Примечание: связанный текст содержит 2 опечатки ( XauthLocaionвместо XauthLocation)

DestinyOne
источник
Вопрос не о Windows.
Касперд
На MacOS это почти то же самое, различия вместо того Xming, что мы должны получить XQuartz, и ssh_configфайл находится в другом месте, мое есть /private/etc/ssh.
DestinyOne
А также, последняя строка для ssh_configбудет:XAuthLocation /opt/X11/bin/xauth
DestinyOne
2
Требуется редактирование: XauthLocaion-> XauthLocation(это слишком мало для меня).
Эхристоферсон
1
Кроме установки xming, ssh, xauthи xorg(шаг 1), единственное , что нужно для меня былоexport DISPLAY=localhost:0
Одноименный
11

Как уже отмечалось, похоже, что xauthв OS X Yosemite регрессировал до старой версии, которая не работает с $DISPLAYнастройками XQuartz :

% xauth -V
1.0.9
% xauth generate $DISPLAY .
xauth: (argv):1:  bad display name "/private/tmp/com.apple.launchd(...)/org.macosforge.xquartz:0" in "add" command
гость
источник
1
Я протестировал те же строки на OS X 10.11, и я не получаю никакой ошибки. Все та же версия XQuartz.
Сорин
1
@guest Ваша xauth generate $DISPLAY .команда работала на моем Mac OS X High Sierra (10.13), и это решило мою No xauth data; using fake authentication data for X11 forwarding.задачу.
SebMa
2

На данный момент в MacOS есть ошибка. Я тоже сталкивался с этим. Исправление для меня включало добавление следующего к моему .bash_profile

dispdir=`dirname $DISPLAY`
dispfile=`basename $DISPLAY`
dispnew="$dispdir/:0"
if [ -e $DISPLAY -a "$dispfile" = "org.x:0" ]; then
  mv $DISPLAY $dispnew
fi
export DISPLAY=$dispnew

По сути, имя файлового канала, связанного с корневым каталогом X, не может быть обработано правильно, и поэтому нуждается в исправлении. :-)

Красный смокинг
источник
Я сомневаюсь, что это решило бы ошибку в приложениях GUI OS X, таких как SourceTree.
Сорин
Подтверждение того, что он работает на Sierra для запуска emacs с использованием X - Mac является сервером. это должно работать широко в тех случаях, когда клиент находится на удаленной машине
Марк Маллин
2

В том числе

XAuthLocation / opt / local / bin / xauth в ~ / .ssh / config

у меня в macOS Sierra 10.12.6 работала у меня. Небольшое изменение от ответа 7).

Кеплер Оливейра Филю
источник
1

я просто удалил ~ / .Xauthority (конечный компьютер) из моей корневой папки и ssh -X 192.168.123.1 снова и ik работал.

Марсель Краан
источник
Я могу подтвердить, что это ответ на Mac OS Sierra 10.12.4. Удаление ~ / .Xauthority на SSH-сервере делает свое дело: ~$ mv ~/.Xauthority ~/.Xauthority.bak новый волшебный файл cookie автоматически помещается обратно в ~ / .Xauthority, как только я снова захожу. Скриптов Bash не требуется вообще.
Кеннет Пегас
1

В моем случае это была проблема .Xauthority, содержащего не отправленные файлы cookie Magic, Фабби на http://askubuntu.com/questions/571116/ рекомендует 2014-11-14 добавить эту строку в конце .bashrc или , профиль, позволяющий пересылать ключи xauth между пользователями при вызове su:

export $(dbus-launch)

Я также добавил ранее:

export XAUTHORITY=~/.Xauthority 

чтобы убедиться, что удаленный вызов с ssh -X ̍ @ найдет его.

В моем случае .Xauthority - это символическая ссылка на оригинального пользователя /home//.Xauthority, которую я ...

  cd /home/<child_user>;ln -sf /home/<parent_user>/.Xauthority .xAuthority

с правильными правами:

  sudo chown <parent_user> /home/<parent_user>/.profile
  chmod a+rw /home/<parent_user>/.profile 

так что это доступно и для. сможет запускать приложения и отображать результаты в X-окне на своем локальном экране через учетную запись прокси!

СОВЕТ: Проверьте список xauth ... если отражает волшебное печенье на.

все-Информатик
источник
0

Я бы добавил это как комментарий, но мне не хватает представителя. Добавление еще одной строки в решение Сорина сработало для меня.

Откройте файл конфигурации ssh, vim ~/.ssh/config затем добавьте в него следующие строки:

Host *
    ForwardAgent yes
    ForwardX11 yes
    XAuthLocation /opt/X11/bin/xauth

Вы можете дважды проверить свое xauthместоположение с помощью:

which xauth
ssanch
источник
Не уверен, что это действительно сработает, потому что местоположение xauth будет различным на каждой удаленной машине. Ваш выглядит как MacOS, но Linux находится в другом месте. В основном я начал полностью отключать ForwardX11, потому что почти никогда не пользуюсь им.
Сорин