Я нашел проблему. Оказалось, что это проблема модуля 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
BECOME password:
при запуске команды ansible? Вы ввели свой пароль для sudo там? - person Zeitounator   schedule 27.08.2019