Apache Error AH01618: user authentication failure Password Mismatch — Решение
Пользователь не может пройти HTTP Basic авторизацию на сайте: диалоговое окно ввода логина и пароля появляется повторно, после чего возвращается ошибка 401 Unauthorized. В журнале error.log регистрируется ошибка сверки пароля: [auth_basic:error] [pid 1234:tid 5678] [client 192.168.1.5:51234] AH01618: user 'admin': authentication failure for "/admin": Password Mismatch.
| Причина сбоя | Что произошло | Механизм ошибки |
|---|---|---|
| Неверный ввод пароля | Опечатка пользователя | Введенный пароль не совпадает с хэшем в .htpasswd |
| Несовместимый алгоритм хэша | Хэш сгенерирован старой утилитой (MD5/SHA1/Crypt) | Apache собран без поддержки устаревшего алгоритма |
Повреждение файла .htpasswd | Лишние пробелы или перенос строк Windows (\r\n) | Нарушение структуры текстовой строки user:hash |
- Пользователю блокируется доступ к закрытому разделу сайта.
- В логах фиксируются множественные попытки ввода неверных учетных данных.
- Перегенерируйте пароль пользователя в файле
.htpasswdс использованием современного и безопасного алгоритма хэширования bcrypt (флаг-B):# Для изменения пароля существующего пользователя: sudo htpasswd -B /etc/apache2/.htpasswd admin # Для создания нового файла с нуля (флаг -c перезапишет файл!): sudo htpasswd -c -B /etc/apache2/.htpasswd admin - Проверьте права доступа: файл
.htpasswdдолжен быть доступен для чтения системному пользователю веб-сервера (www-dataилиapache), но закрыт для прямой отдачи клиентам:sudo chown root:www-data /etc/apache2/.htpasswd sudo chmod 640 /etc/apache2/.htpasswd - Проверьте конфигурацию защиты каталога в файле виртуального хоста или
.htaccess:<Directory /var/www/html/admin> AuthType Basic AuthName "Restricted Area" AuthBasicProvider file AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory> - Убедитесь, что файл
.htpasswdне содержит символов возврата каретки Windows (CRLF). Преобразуйте файл в формат UNIX:sudo dos2unix /etc/apache2/.htpasswd 2>/dev/null || true - Перезагрузите веб-сервер:
sudo systemctl reload apache2 # или httpd.
.htpasswd внутри публичной директории сайта DocumentRoot (например, внутри /var/www/html/). Храните его на уровень выше — в каталоге /etc/apache2/ или /etc/httpd/, чтобы предотвратить его прямую загрузку злоумышленниками.Частые вопросы (FAQ)
Какой алгоритм хэширования в htpasswd самый безопасный?
Наиболее безопасным является алгоритм bcrypt (опция -B в утилите htpasswd). Он устойчив к перебору на GPU и использует адаптивную трудоемкость (cost).
Почему htpasswd -m считается устаревшим?
Опция -m использует алгоритм MD5 (apr1), который на сегодняшний день является криптографически слабым и легко взламывается методами перебора по радужным таблицам.
Как проверить содержимое файла .htpasswd?
Выполните cat /etc/apache2/.htpasswd. Каждая строка должна иметь строгий формат: username:$2y$05$...хэш_пароля.
Как добавить нового пользователя, не затирая старых?
Выполняйте команду БЕЗ флага -c: sudo htpasswd -B /etc/apache2/.htpasswd newuser (флаг -c используется только при создании нового файла).