Категория: Доступ и аутентификацияОбновлено 2026-10-18

AllowUsers (разрешённые пользователи SSH)

AllowUsers это директива SSH сервера OpenSSH (sshd_config), которая ограничивает вход по SSH учётными записями, чьи имена подходят под список шаблонов, при необходимости с привязкой к узлам источника в форме USER@HOST. Если она задана, все неперечисленные записи получают отказ; если не задана, ограничения нет. DenyUsers проверяется первым, а AllowGroups и DenyGroups делают то же для групп.

Что делает AllowUsers и как работают шаблоны

Руководство sshd_config говорит, что если AllowUsers задана, вход разрешён только для имён пользователей, подходящих под один из шаблонов, а по умолчанию вход разрешён всем пользователям. Элементы разделяются пробелами. Допустимы только имена: числовой идентификатор пользователя не распознаётся. Шаблоны подчиняются правилам ssh_config(5): * заменяет любое число символов, ? ровно один, а ведущий ! отрицает элемент, хотя отрицательное совпадение само по себе никогда не даёт положительного результата.

Форма USER@HOST проверяет имя пользователя и подключающийся узел отдельно, так что пользователю можно разрешить вход только из определённых источников. Руководство добавляет, что часть узла может содержать адреса в формате CIDR адрес/длина маски. Групповые аналоги: AllowGroups, сопоставляющая имя основной или дополнительной группы, и запрещающие формы DenyUsers и DenyGroups.

Повтор ключевого слова в нескольких строках не заменяет прежний список. В исходном коде OpenSSH каждая строка дополняет его.

Минимальная безопасная настройка и как её проверить

Классическая блокировка: указать неверное имя или забыть своё. Перечислите все учётные записи, которым нужен вход по SSH, включая автоматизацию, и проверьте из второго терминала, не закрывая текущую сессию:

# /etc/ssh/sshd_config
AllowUsers admin deploy@192.0.2.0/24

sudo sshd -t
sudo sshd -T | grep -i '^allowusers '
sudo systemctl reload ssh     # на некоторых дистрибутивах sshd

Здесь admin может подключаться откуда угодно, а deploy только из этой сети. Ключ sshd -t проверяет файл, а sshd -T выводит действующую конфигурацию, при необходимости с -C для применения блоков Match, как объясняет руководство sshd(8). Затем попробуйте войти под неперечисленной записью. Должен быть отказ, а в журнале сервера появится строка вида "User NAME from ADDRESS not allowed because not listed in AllowUsers" (по исходному коду OpenSSH). Наконец, убедитесь, что ваш вход и все служебные учётные записи работают, прежде чем закрывать старую сессию. Держите консоль провайдера как путь назад.

Приоритет, взаимодействие с другими настройками и ошибки

Руководство указывает, что AllowUsers не учитывается для пользователей, подходящих под DenyUsers, и так же для пары групп. Исходный код показывает полный порядок проверок: DenyUsers, затем AllowUsers, затем DenyGroups, затем AllowGroups. Вход должен пройти каждый настроенный список. Если заданы и AllowUsers deploy, и AllowGroups ssh-users, deploy должен ещё и входить в ssh-users.

Место в усилении защиты SSH

Список разрешённых сужает поверхность атаки: украденный ключ или угаданный пароль неперечисленной записи отклоняются до того, как принесут пользу. Он же не даёт только что созданной системной записи, или добавленной пакетом, случайно стать точкой входа по SSH. Для команд AllowGroups часто удобнее списка имён, ведь добавление человека становится изменением группы, а не правкой конфигурации.

AllowUsers лучше всего работает рядом с PasswordAuthentication no, PermitRootLogin no и узкими правилами sudo, следуя принципу минимальных привилегий. В крупных системах направляйте входы через бастионный узел и ограничивайте исходные сети ещё и на межсетевом экране. Порядок внедрения есть в руководстве по усилению защиты SSH, вопросы привилегий в материале пользователи, sudo и минимальные привилегии, а сетевая часть в руководстве по межсетевому экрану Linux. Первоисточники: руководство sshd_config и исходный код OpenSSH auth.c.

Связанные термины: sshd_config, PermitRootLogin, Минимальные привилегии, Бастионный узел, authorized_keys.

Часто задаваемые вопросы

Что делает AllowUsers в sshd_config?

Она разрешает вход по SSH только для имён пользователей, подходящих под один из её шаблонов. Если директива не задана, вход разрешён всем пользователям с учётом остальных настроек.

Чем AllowUsers отличается от AllowGroups?

AllowUsers сопоставляет имена пользователей, а AllowGroups имя основной или дополнительной группы. Группы обычно удобнее для команд, потому что доступ меняется правкой состава группы, а не файла конфигурации.

Что победит, если пользователь есть и в AllowUsers, и в DenyUsers?

Победит DenyUsers. Руководство говорит, что AllowUsers не учитывается для пользователей, подходящих под DenyUsers, а в исходном коде DenyUsers проверяется первым.

Как разрешить пользователю вход только с одного IP адреса или сети?

Используйте форму USER@HOST, например deploy@192.0.2.0/24. Пользователь и узел проверяются отдельно, а часть узла может быть адресом в нотации CIDR.

Почему после AllowUsers перестали входить root или служебная учётная запись?

Когда AllowUsers задана, все неперечисленные записи получают отказ, включая root и пользователей автоматизации. Добавьте нужные для SSH записи, затем проверьте результат через sshd -T и пробный вход.

Хотите увидеть, в каком состоянии ваш сервер?

Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.

Получить бесплатную проверку сервераОткрыть Security Lab