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

PasswordAuthentication (вход по паролю в SSH)

PasswordAuthentication это директива SSH сервера OpenSSH (sshd_config), определяющая, могут ли пользователи входить по SSH с паролем учётной записи. Допустимы yes и no, по умолчанию в руководстве указано yes. Значение no принуждает к входу по ключам и убирает главную мишень подбора паролей по SSH, но нужно учесть и keyboard-interactive, который тоже может запрашивать пароль.

Что контролирует PasswordAuthentication и значение по умолчанию

Согласно руководству sshd_config, директива определяет, разрешена ли аутентификация по паролю, а значение по умолчанию yes. Это значит, что свежеустановленный sshd без переопределений принимает пароли для любой учётной записи, у которой он есть.

Директива касается только метода SSH с названием password. Важны две соседние настройки. KbdInteractiveAuthentication (современное имя; ChallengeResponseAuthentication устаревший псевдоним) по умолчанию в портируемом руководстве имеет значение yes. А UsePAM, если включён, задействует аутентификацию PAM через keyboard-interactive и через парольную аутентификацию. В портируемом руководстве отмечено, что PAM keyboard-interactive обычно играет ту же роль, что и пароль, поэтому следует отключить либо PasswordAuthentication, либо KbdInteractiveAuthentication. Для сервера только с ключами отключите оба и оставьте PubkeyAuthentication yes.

Директива влияет только на SSH. Пароли по-прежнему работают для консоли, su и, где настроено, sudo.

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

Риск в том, чтобы отключить пароли раньше, чем заработает ключ. Сначала докажите вход по ключу из второго терминала, не закрывая текущую сессию:

ssh -o PreferredAuthentications=publickey -i ~/.ssh/id_ed25519 -l deploy your-server

Затем отредактируйте /etc/ssh/sshd_config и проверьте:

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no

sudo sshd -t
sudo sshd -T | grep -iE '^(passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication) '
sudo systemctl reload ssh     # на некоторых дистрибутивах sshd
ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -l deploy your-server

Последняя команда, запущенная из нового терминала, должна завершиться "Permission denied" без предложения ввести пароль. Как описано в руководстве sshd(8), -t проверяет конфигурацию, а -T выводит действующие значения. Если нужен второй фактор, задайте AuthenticationMethods, как показано в руководстве по двухфакторной аутентификации SSH. Держите наготове консоль провайдера на случай, если ключ не заработает.

Взаимодействие с другими настройками и типичные ошибки

По руководству, для ключевого слова используется первое полученное значение. Если подключённый файл или более ранняя строка уже содержит PasswordAuthentication yes, ваше no ниже ничего не изменит, поэтому проверяйте через sshd -T. Директива разрешена внутри блоков Match, что позволяет сделать исключение для одного адреса или пользователя, но такое исключение снова открывает мишень для подбора, поэтому применяйте его осторожно и проверяйте через -C.

Порядок строк подробно описан в статье про sshd_config.

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

Отключение паролей это самое результативное изменение в sshd_config: угаданный или утёкший пароль перестаёт быть достаточным для входа, а подбор паролей по SSH теряет цель. Шум в журналах при этом не исчезает, боты по-прежнему подключаются и получают отказ, поэтому сохраните fail2ban или ограничения скорости на межсетевом экране и ограничьте число попыток на соединение через MaxAuthTries.

Сочетайте с PermitRootLogin no, списком разрешённых через AllowUsers и защищёнными ключами; принципы изложены в статье про аутентификацию по ключам. Полный порядок внедрения есть в руководстве по усилению защиты SSH, а вторым слоем служит настройка fail2ban. Первоисточники: руководство sshd_config и портируемая страница sshd_config(5) для UsePAM и KbdInteractiveAuthentication. После отключения паролей именно файлы authorized_keys определяют, кто может войти, поэтому регулярно проверяйте их.

Связанные термины: sshd_config, Аутентификация по ключам, Атака подбором, MaxAuthTries, Двухфакторная аутентификация.

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

Какое значение PasswordAuthentication по умолчанию?

По руководству OpenSSH это yes, то есть пароли принимаются, пока вы не зададите no. Дистрибутив может поставлять другое значение, поэтому проверьте командой sudo sshd -T | grep -i passwordauthentication.

Достаточно ли PasswordAuthentication no, чтобы запретить вход по паролю?

Не всегда. Аутентификация keyboard-interactive, через которую PAM может запросить пароль, настраивается отдельно, поэтому на сервере только с ключами задайте ещё и KbdInteractiveAuthentication no и проверьте результат через sshd -T.

Почему пароль всё ещё запрашивают после PasswordAuthentication no?

Типичные причины: keyboard-interactive при UsePAM yes, более ранняя строка или подключённый файл с yes (побеждает первое значение) либо блок Match, снова включающий вход. Проверьте через sshd -T, добавив -C для блоков Match.

Как не потерять доступ при отключении паролей?

Сначала подтвердите вход по ключу из второго терминала, не закрывайте текущую сессию, выполните sshd -t перед перезагрузкой и держите наготове консоль провайдера.

Можно ли разрешить пароли только некоторым пользователям или адресам?

Да. PasswordAuthentication разрешена внутри блока Match, поэтому можно включить её для конкретного пользователя или адреса, оставив no глобально, но каждое исключение ослабляет защиту.

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

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

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