pam_unix (sudo: auth): сбой разговора, авторизация не может определить пароль для [имя пользователя]

Я использую ansible для подготовки своего производственного кластера Centos 7. К сожалению, выполнение приведенной ниже команды приводит к использованию ansible Tiemout и подключаемых модулей аутентификации Linux (pam) error conversation failed.

Та же самая команда ansible работает хорошо, когда она выполняется против виртуальной лаборатории, сумашедшей из ящиков vagrant.

Ансибальная команда

$ ansible master_server -m yum -a 'name=vim state=installed' -b -K -u lukas -vvvv
123.123.123.123 | FAILED! => {
    "msg": "Timeout (7s) waiting for privilege escalation prompt: \u001b[?1h\u001b=\r\r"
}

Журнал SSHd

# /var/log/secure
Aug 26 13:36:19 master_server sudo: pam_unix(sudo:auth): conversation failed
Aug 26 13:36:19 master_server sudo: pam_unix(sudo:auth): auth could not identify password for [lukas]

person Lukasz Dynowski    schedule 26.08.2019    source источник
comment
Извините, если вопрос кажется глупым, но просто чтобы проверить еще раз: вы получаете подсказку BECOME password: при запуске команды ansible? Вы ввели свой пароль для sudo там?   -  person Zeitounator    schedule 27.08.2019
comment
Тупых вопросов нет :) Да, у меня получилось.   -  person Lukasz Dynowski    schedule 27.08.2019


Ответы (5)


Я нашел проблему. Оказалось, что это проблема модуля PAM auth! Позвольте мне описать, как я пришел к решению.

Контекст:

Я настроил свою машину для отладки, то есть у меня было открыто четыре окна терминала.

  • 1-й терминал (локальный компьютер): здесь я выполнял ansible prduction_server -m yum -a 'name=vim state=installed' -b -K -u username
  • 2-й терминал (рабочий сервер): здесь я выполнил journalctl -f (общесистемный журнал).
  • 3-й терминал (рабочий сервер): здесь я выполнил tail -f /var/log/secure (журнал для sshd).
  • 4-й терминал (рабочий сервер): здесь я редактировал vi /etc/pam.d/sudo файл.

Каждый раз, когда я выполнял команду из 1-го терминала, я получал следующие ошибки:

# ansible error - on local machine
Timeout (7s) waiting for privilege escalation prompt error.
# sshd error - on remote machine
pam_unix(sudo:auth): conversation failed
pam_unix(sudo:auth):  [username]

Я показал всю свою настройку своему коллеге, и он сказал мне, что ошибка связана с PAM. Честно говоря, я впервые слышу о PAM. Итак, мне пришлось прочитать этот учебник по PAM. Я выяснил, что эта ошибка связана с интерфейсом auth, расположенным в модуле /etc/pam.d/sudo. Копаясь в Интернете, я наткнулся на этот модуль pam_permit.so с флагом управления sufficient, который решил мою проблему!

Решение

По сути, я добавил auth sufficient pam_permit.so строку в /etc/pam.d/sudo файл. Посмотрите на пример ниже.

$ cat /etc/pam.d/sudo
#%PAM-1.0
# Fixing ssh "auth could not identify password for [username]"
auth       sufficient   pam_permit.so

# Below is original config
auth       include      system-auth
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so revoke
session    required     pam_limits.so
session    include      system-auth

Вывод:

Я потратил 4 дня, чтобы прийти к этому решению. Я наткнулся на более чем дюжину решений, которые мне не подошли, начиная от дублированного пароля sudo в файле ansible hosts/config, конкретной конфигурации ldap до получения совета от всегда сварливой системы. админы!

Примечание:

Поскольку я не эксперт в PAM, я не знаю, повлияет ли это исправление на другие аспекты системы, поэтому будьте осторожны, не копируйте и не вставляйте этот код вслепую! Однако, если вы являетесь экспертом в области PAM, поделитесь с нами альтернативными решениями или советами. Спасибо!

person Lukasz Dynowski    schedule 27.08.2019
comment
после добавления этого я могу sudo из командной строки вообще без пароля. Я вижу ту же проблему, что и вы, но другие должны знать, что это отключит безопасность sudo (что избавляет от ошибки!) - person Bill McGonigle; 21.06.2020
comment
Спасибо за вклад, Билл, очень признателен. - person Lukasz Dynowski; 21.06.2020
comment
если это поможет, через несколько часов я обнаружил, что моя ошибка была связана с порядком файлов в /etc/sudoers. Файлы загружаются в порядке ASCII, а более поздняя ALL маскирует NOPASSWD: /path/to/command, которая появилась ранее. Я переименовал файл с более строгими ограничениями в 00_filename, после чего сообщение об ошибке, с которым мы оба столкнулись, исчезло! Не уверен, что у нас была такая же проблема. - person Bill McGonigle; 23.06.2020
comment
Так что в конце концов это похоже на безопасность sudo, не связанную с PAM. Прошел почти год с тех пор, как я написал этот ответ, и не помню, чтобы на моей стороне был доступ без пароля для пользователей sudo. Спасибо, что разъяснили это. - person Lukasz Dynowski; 23.06.2020

Предполагая, что пользователь lukas является локальной учетной записью, вы должны посмотреть, как модуль pam_unix.so объявлен в вашем pam-файле system-auth. Но для конкретного ответа необходима дополнительная информация об учетной записи пользователя и конфигурации pam.


При добавлении достаточной аутентификации pam_permit.so достаточно для получения доступа. Не рекомендуется использовать его где-либо, кроме самой небезопасной тестовой среды. На справочной странице pam_permit:

   pam_permit is a PAM module that always permit access. It does nothing
   else.

Таким образом, добавление pam_permit.so в качестве достаточного для аутентификации таким образом полностью обойдет защиту для всех пользователей.

person defaultadminuser    schedule 12.03.2020

Я получил ту же ошибку, когда попытался перезапустить apache2 с помощью sudo service apache2 restart

При входе в root я смог увидеть реальную ошибку, связанную с конфигурацией apache2. Оказалось, что я удалил файлы SSL-сертификата сайта несколько месяцев назад, но не отключил сайт в apache2. a2dissite сделал свое дело.

person Sebastian Wimmer    schedule 05.12.2019
comment
Запуск службы apache и сломанные сертификаты ssl не имеют ничего общего с pam_unix. Проблема более фундаментальна. Простое отключение сайта в apache вряд ли повлияет на эту проблему. Таким образом, я проголосовал за ваш ответ. - person Lukasz Dynowski; 05.12.2019
comment
Имхо, это делает мой ответ еще более верным. Да, явно существует фундаментальная проблема с модулем аутентификации PAM, но многие другие, столкнувшиеся с этим, вероятно, предпочтут не трогать его и в первую очередь найти причину ошибки, даже если отсутствует правильное сообщение об ошибке (эта тема №1 в Google). для сообщения об ошибке PAM). В моем случае в конфигурации apache отсутствовали файлы, очевидно, это могло быть что-то еще для кого-то другого. Тем не менее, для многих это будет именно так, как это произошло при базовой установке LAMP. Так что нет, я не принимаю ваш отрицательный голос;) - person Sebastian Wimmer; 20.12.2019
comment
Эта страница является первым результатом поиска этой ошибки в отношении Apache, и этот комментарий является правильным ответом. В этих случаях проблема заключается в настройке Apache, а не в SSL. Не изменяйте разрешение PAM из-за проблем с конфигурацией Apache. - person Wolf; 01.02.2020
comment
голосование за получение различных сообщений об ошибках при запуске apache2 от имени пользователя root - person Dark Matter; 25.02.2020

У меня была эта ошибка после обновления sudo до версии 1.9.4 с помощью pacman. Я не заметил, что pacman предоставил новый файл sudoers.

Мне просто нужно было объединить /etc/sudoers.pacnew. Подробнее см. здесь: https://wiki.archlinux.org/index.php/Pacman/Pacnew_and_Pacsave

Я знаю, что это не отвечает на первоначальный вопрос (который относится к системе Centos), но это лучший результат Google для сообщения об ошибке, поэтому я решил оставить свое решение здесь на случай, если кто-нибудь столкнется с этой проблемой. из операционной системы на базе Arch Linux.

person Tom    schedule 21.12.2020

Сам оказался в такой же ситуации, рвал на себе волосы. В моем случае в конце файла sudoers была скрыта строка:

%sudo ALL=(ALL:ALL) ALL

Это отменяет предыдущие авторизации. Если вы не используете группу sudo, эту строку можно смело удалить.

person bronson    schedule 04.05.2021