SSH Linux (OpenSSH)

SSH в Linux: SSH: Authentication refused bad ownership or modes for directory пользователя

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Ошибка SSH Authentication refused: bad ownership or modes for directory означает, что sshd отказался доверять небезопасному пути к файлу авторизованных ключей или отдельному скрипту проверки ключей.

В этой статье
  1. Что происходит и когда это важно
  2. Возможные причины и как их отличить
  3. Пошаговая диагностика и исправление
  4. Команды из инструкции с пояснениями
  5. Как проверить результат
  6. Если проблема не устранена

#Что происходит и когда это важно

Клиент получает Permission denied (publickey), а серверный журнал прямо указывает bad ownership or modes for directory .... Каталог в сообщении может находиться в пути пользователя либо в пути программы AuthorizedKeysCommand.

#Возможные причины и как их отличить

Возможная причинаКак узнатьЧто делать
Домашний каталог доступен на запись постороннимStrictModes проверяет не только .ssh, но и составляющие пути.Журнал содержит путь к home или .ssh.Проверить владельца/разрешения только затронутых элементов.
Неверный владелец authorized_keysФайл принадлежит другому пользователю после копирования.namei -l показывает чужого владельца.Восстановить назначенного владельца после проверки учётной записи.
Небезопасен путь AuthorizedKeysCommandСкрипт проверки ключей или родительский каталог изменяемы не тем пользователем.В ошибке показан путь к исполняемому файлу, а не home.Проверить путь скрипта по отдельным правилам sshd.

#Пошаговая диагностика и исправление

  1. Сохраните действующий доступЕсли SSH ещё работает в одном сеансе, не закрывайте его. Откройте консоль провайдера/локальный доступ. Не пытайтесь устранить ошибку отключением StrictModes: это снижает безопасность проверки ключей.
  2. Найдите отказ именно в журнале сервераНа сервере выполните sudo journalctl -u ssh -b -n 100 --no-pager для Debian/Ubuntu или sudo journalctl -u sshd -b -n 100 --no-pager на системе с таким названием службы. Ищите точный путь после bad ownership or modes; если sshd пишет про AuthorizedKeysCommand, не меняйте домашний каталог пользователя без необходимости.
  3. Сверьте учётную записьВыполните getent passwd ИМЯ_ПОЛЬЗОВАТЕЛЯ и найдите домашний каталог. Убедитесь, что это действительно пользователь, под которым требуется войти, и что пути в журнале относятся к нему. Если каталог находится на NFS/сетевом томе, оцените особенности прав.
  4. Просмотрите весь путь без измененияВыполните namei -l /ПУТЬ/ИЗ_ЖУРНАЛА; замените пример фактическим путём. Вывод покажет каждого владельца и режим родительских каталогов. Для authorized_keys проверьте .ssh и сам файл отдельно через ls -ld, не делайте chmod -R на весь home.
  5. Сверьте политику sshdАдминистратор запускает sudo sshd -T для общих настроек или sudo sshd -T -C user=ИМЯ,host=ИМЯ_ХОСТА,addr=IP для правил Match с фактическими значениями. Найдите StrictModes, AuthorizedKeysFile и AuthorizedKeysCommand. Если sshd отсутствует в PATH, используйте штатный путь вашей системы; не меняйте конфигурацию до проверки.
  6. Исправляйте права только найденного объектаЕсли подтверждено, что конкретный каталог ошибочно доступен на запись группе или остальным, администратор убирает именно эти биты на нём после согласования. Обычно .ssh принадлежит пользователю и закрыт от остальных; authorized_keys не должен быть изменяем посторонними. Для AuthorizedKeysCommand действуют требования к владельцу root и пути исполняемого файла. Не выполняйте команды chown/chmod по шаблонному пути без оценки ACL, NFS и реального владельца.
  7. Повторите вход новым сеансомНе закрывая старый сеанс, на клиенте выполните ssh -v пользователь@сервер со своими данными. Убедитесь, что ключ принят. Если ошибок нет, проверьте журнал, а затем можно завершать резервный сеанс. Если не помогло, верните ровно те права, которые изменяли, и продолжите диагностику.

#Команды из инструкции с пояснениями

Linux · Терминал (Bash)Команда
Данные локальной/каталожной учётной записи; заменить пример.
getent passwd ИМЯ_ПОЛЬЗОВАТЕЛЯ
Linux · Терминал (Bash)Команда
Просмотр разрешений всех компонентов конкретного пути.
namei -l /ПУТЬ/ИЗ_ЖУРНАЛА
Linux · Терминал (Bash)КомандаНужен sudo
Просмотр итоговой конфигурации sshd, администратор.
sudo sshd -T

#Как проверить результат

Новый вход с допустимым ключом проходит, в журнале нет bad ownership/modes, при этом отсутствует доступ на запись к ключам у посторонних.

#Если проблема не устранена

Если путь находится на NFS, SELinux или используется AuthorizedKeysCommand, потребуется адресная помощь администратора; отключение StrictModes не является исправлением.

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.