Як я можу запобігти попередженням немає даних xauth; використання підроблених даних аутентифікації для переадресації X11?


66

Кожен раз, коли я ініціюю ssh-з'єднання зі свого Mac на Linux (Debian), я отримую це попередження:

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

Це також трапляється для інструментів, які використовують ssh, наприклад git або mercurial.

Я просто хочу внести локальну зміну в свою систему, щоб не допустити цього.

Примітка. У мене на Mac OS X (10.8.1) у мене є сервер X11 (XQuartz 2.7.3 (xorg-сервер 1.12.4)), і він працює належним чином, я можу успішно запускати годинник локально або віддалено.


1
Яку команду ви використовуєте для ssh?
DerfK

@DerfK просто, ssh hostnameале по-своєму ~/.ssh/configя додав ForwardX11 yesдеякий час тому. Все-таки це те, що я хочу там мати.
sorin

Використовуючи 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

Тепер попередження пропало.


10
О БОЖЕ МІЙ. Роки я намагався знайти рішення, і це спрацювало. Роки я кажу! Зауважте, що я це зробив, додавши цей рядок під Host *записом у моєму ~/.ssh/configфайлі замість редагування /etc/ssh/ssh_config. Єдину документацію я знайшов для цього man sshd_config.
Демітрі

Це працювало і для мене. Я розумію, що на даний момент XQuartz недостатньо підтримується через відсутність фінансування. Тому я думаю, що таких питань переносу насправді менше, ніж я б очікував.
AlanObject

На Високій Сьєррі; це той, який працював і на мене.
mklein9

1
Зауважте, що у вас може виникнути ця проблема навіть тоді, коли ваша оболонка може знайти xauth у вашій PATH! Я здогадуюсь, що ssh-клієнт санітарно очищує ваш PATH з міркувань безпеки?
MarcH

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
Макс Коплан

12

Запуск Ubuntu в Windows 10 працює, ssh -X щоб отримати середовище GUI на віддаленому сервері

  • Спочатку

Встановіть усе наступне. У вікні встановіть 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 shell, відкрийте Xmingпрограму та використовуйте ssh -X yourusername@yourhost. Потім насолоджуйтесь середовищем GUI.

ssh -X yourusername@yourhost

Проблема також в підсистемі Ubuntu в Windows, і посилання знаходиться на

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

Примітка. Зв'язаний текст включає 2 помилки ( XauthLocaionзамість XauthLocation)


Питання не в Windows.
kasperd

У 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.
sorin

1
@guest Ваша xauth generate $DISPLAY .команда працювала на моїй Mac OS X High Sierra (10.13), і це вирішило мій No xauth data; using fake authentication data for X11 forwarding.pb.
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.
sorin

Підтвердивши, що це працює на Sierra для запуску emacs за допомогою X - оскільки Mac є сервером. це має працювати широко у випадках, коли клієнт перебуває на віддаленій машині
Марк Маллін


1

Я щойно видалив ~ / .Xauthority (машина призначення) з моєї кореневої папки та ssh -X 192.168.123.1 знову і ik працював.


Я можу підтвердити, що це відповідь на Mac OS Sierra 10.12.4. Видалення ~ / .Xauthority на сервері SSH робить трюк: ~$ mv ~/.Xauthority ~/.Xauthority.bak новий чарівний файл cookie автоматично було повернуто в ~ / .Xauthority після того, як я знову увійшов у систему. Сценарії Баша взагалі не потрібні.
Кеннет Пегас

1

У моєму випадку це була проблема .Xauthority, що містить файл Magic cookie, який не пересилається, Fabby на 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

Не впевнений, чи дійсно це буде працювати, оскільки розташування xauth було б різним на кожному віддаленому пристрої. Ваш схожий на MacOS, але Linux має його в іншому місці. Я здебільшого почав повністю відключати ForwardX11, тому що майже ніколи його не використовую.
sorin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.