sshd: pam_unix и ошибки открытия сеанса
Если аутентификация проходит, а сеанс не открывается, дело в PAM. Частые причины: нет места на диске, недоступен домашний каталог, сработало ограничение по числу сеансов или по времени.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Нет места на диске
Открытие сеанса пишет файлы: записи о входе, каталоги времени работы. При заполненном разделе это не проходит.
-
Домашний каталог отсутствует или недоступен
Модули PAM создают в нём файлы. Если каталога нет или он на неподмонтированном разделе, сеанс не открывается.
-
Сработало ограничение модуля PAM
Модули могут ограничивать число одновременных сеансов, время входа или требовать членства в группе. Отказ приходит именно от них.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Сообщения модулей PAM с именами.
sudo journalctl -u ssh -n 50 --no-pager | grep -i pamСвободное место на корне и в домашних каталогах.
df -h / /homeЦепочка модулей для ssh.
sudo ls -l /etc/pam.d/sshdРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Открытие сеанса пишет файлы: записи о входе, каталоги времени работы. При заполненном разделе это не проходит.
- Как проверить
-
Посмотрите место и записи в журнале.
df -h / journalctl -u ssh -n 30 --no-pager | grep -i pam
- Как исправить
- Освободите место. Это же объясняет, почему вход перестаёт работать «сам по себе» на сервере, который давно не чистили.
- Почему происходит
- Модули PAM создают в нём файлы. Если каталога нет или он на неподмонтированном разделе, сеанс не открывается.
- Как проверить
-
Посмотрите каталог и монтирование.
getent passwd user | cut -d: -f6 ls -ld /home/user; findmnt -T /home
- Как исправить
- Создайте каталог с правильным владельцем или дождитесь монтирования раздела. Для сетевых домашних каталогов нужна зависимость от монтирования.
- Почему происходит
- Модули могут ограничивать число одновременных сеансов, время входа или требовать членства в группе. Отказ приходит именно от них.
- Как проверить
-
Посмотрите, какой модуль отказал.
sudo journalctl -u ssh -n 40 --no-pager | grep -i -E "pam_|denied" sudo cat /etc/security/limits.conf | grep -v "^#" | head
- Как исправить
- Исправьте настройку конкретного модуля. Имя модуля в сообщении журнала — самая полезная часть.
Пример вывода
Сеанс не открывается: нет места на диске. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
sshd[5300]: pam_unix(sshd:session): session opened for user app(uid=1001) by (uid=0)
sshd[5300]: error: openpty: No space left on device
sshd[5300]: error: session_pty_req: session 0 alloc failed
Связанные ошибки
- status=224/PAM в systemd Код 224/PAM: не удалось открыть сеанс PAM для службы. Обычно нет нужного файла настроек в /etc/pam.d.
- No space left on device в журнале службы Нет места на устройстве: разбор по свободным блокам, по inode, по журналу systemd и по удалённым, но открытым файлам.
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- Disk quota exceeded для службы Место на разделе есть, а запись отклоняется: исчерпана дисковая квота пользователя или группы.
- Docker: no space left on device при запуске контейнеров Раздел с /var/lib/docker заполнен образами и слоями. Как посчитать занятое и что можно удалить безопасно.
- Elasticsearch: индексы переведены в режим только для чтения Elasticsearch блокирует запись при нехватке места: пороги watermark. Как снять блокировку правильно.
- Host key verification failed при подключении к серверу Клиент отказывается подключаться: ключ хоста изменился. Когда это переустановка, а когда повод насторожиться.
- Input/output error в журнале службы Ошибка ввода-вывода: проблемы носителя, отвалившийся сетевой ресурс, повреждённая файловая система. Что проверять срочно.
Где встречается чаще всего
Источники
-
pam(8)
Модули PAM и открытие сеанса. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено на машине с заполненным корневым разделом.