Данный учебник объяснит, как активировать двухфакторную аутентификацию SSH на сервере Ubuntu с применением популярного приложения Google Authenticator. Это существенно укрепит безопасность SSH-сервиса на вашем сервере Ubuntu.
Содержание статьи
- 1 Двухфакторная аутентификация функционирует следующим образом: она требует от пользователя предоставить два различных подтверждения своей личности, обычно это что-то, что он знает (пароль) и что-то, что у него есть (например, код из SMS или приложение-генератор).
- 2 Инсталляция и конфигурация Google Authenticator на сервере Ubuntu.
- 3 Конфигурация SSH-демона с поддержкой Google Authenticator.
- 4 Заметки
- 5 Как деактивировать двухфакторную аутентификацию для SSH.
- 6 Итоги
Двухфакторная аутентификация функционирует следующим образом: она требует от пользователя предоставить два различных подтверждения своей личности, обычно это что-то, что он знает (пароль) и что-то, что у него есть (например, код из SMS или приложение-генератор).
Для удалённого доступа к серверу Ubuntu обычно достаточно ввести пароль или использовать SSH-ключ. Однако двухфакторная аутентификация (2FA) требует предоставления двух компонентов для входа. Это означает, что для доступа к вашему SSH-серверу потребуется также одноразовый пароль, основанный на времени. Такой пароль вычисляется с помощью алгоритма TOTP, который является стандартом IETF. В настоящее время множество сайтов и сервисов, таких как Facebook, Google и Twitter, предлагают 2FA для защиты учётных записей пользователей. Поэтому активация 2FA на вашем SSH-сервере будет весьма разумным шагом.
Этот учебник продемонстрирует, как выполнить настройку:
- Аутентификация с использованием пароля и двухфакторной аутентификации.
- Аутентификация с применением открытого ключа и двухфакторной аутентификации.
Обратите внимание: в данной статье мы рассмотрим серверное программное обеспечение с открытым исходным кодом, которое называется
libpam-google-authenticator
Программное обеспечение, установленное из стандартного репозитория Ubuntu, не требует участия компании Google в процессе аутентификации. Как серверная часть, так и мобильное приложение функционируют без необходимости сетевого доступа.
Инсталляция и конфигурация Google Authenticator на сервере Ubuntu.
Зайдите на свой сервер Ubuntu и выполните следующую команду, чтобы установить Google Authenticator из официального репозитория.

QR-код служит секретным ключом, который известен только вашему SSH-серверу и мобильному приложению TOTP. После того как вы отсканируете QR-код на своем смартфоне, на экране появится шестизначный одноразовый пароль, который обновляется каждые 30 секунд. Этот пароль вам понадобится для доступа к серверу Ubuntu через SSH.
В терминале отображаются секретный ключ, код подтверждения и резервный аварийный код. Рекомендуется хранить эти данные в безопасном месте для будущего использования.
После этого вы можете ввести y, чтобы ответить на все оставшиеся вопросы. Это обновит файл настроек Google Authenticator, отключит возможность повторного использования одного и того же аутентификационного токена, расширит временные рамки и активирует ограничение скорости для предотвращения атак методом подбора.

Конфигурация SSH-демона с поддержкой Google Authenticator.
- Аутентификация с использованием пароля и двухфакторной аутентификации.
- Аутентификация с использованием открытого ключа и двухфакторная аутентификация.
Аутентификация с использованием пароля и двухфакторной аутентификации.
Если вы не применяете SSH-ключ, выполните следующие рекомендации.
Запустите файл настроек сервера SSH.
sudo nano /etc/ssh/sshd_config
В файле необходимо обнаружить два указанных параметра и проверить, чтобы оба были равны значению yes.
UsePAM yes
ChallengeResponseAuthentication yes
Примечание: В Ubuntu 22.04 вместо ChallengeResponseAuthentication следует использовать KbdInteractiveAuthentication.
UsePAM yes
KbdInteractiveAuthentication yes
PAM (модульная система аутентификации) представляет собой гибкую архитектуру для интеграции различных методов аутентификации в Linux. Чтобы активировать Google Authenticator при подключении через SSH, необходимо настроить PAM и включить аутентификацию с использованием Challenge-Response.
Чтобы активировать двухфакторную аутентификацию для пользователя root, необходимо найти параметр PermitRootLogin и задать ему значение yes. Оно не должно быть установлено на PermitRootLogin no или PermitRootLogin prohibit-password.
PermitRootLogin yes
Сохраните файл и закройте его. После этого внесите изменения.

Сохраните файл и закройте его. После этого перезапустите SSH-демон, чтобы применить внесенные изменения.
sudo systemctl restart ssh
Теперь SSH-демон будет запрашивать у вас пароль пользователя и код подтверждения, который представляет собой одноразовый пароль, созданный с помощью Google Authenticator. На следующем изображении показан процесс входа в SSH с сервера CentOS на сервер Ubuntu 20.04.
Аутентификация с применением открытого ключа и двухфакторной аутентификации.
Если вы применяете SSH-ключ для доступа к SSH-серверу, воспользуйтесь следующими указаниями.
Зайдите в файл конфигурации SSH-сервера.
sudo nano /etc/ssh/sshd_config
Откройте файл и проверьте, чтобы оба указанных параметра были установлены на yes.
UsePAM yes ChallengeResponseAuthentication yes
Обратите внимание: в Ubuntu 22.04 необходимо использовать следующие две строки. Параметр ChallengeResponseAuthentication заменен на KbdInteractiveAuthentication.
UsePAM yes KbdInteractiveAuthentication yes
PAM (модуль подключаемой аутентификации) предлагает удобный способ интеграции различных методов аутентификации в вашу систему Linux. Чтобы активировать Google Authenticator через SSH, необходимо включить PAM и аутентификацию с использованием Challenge-Response.
Чтобы разрешить пользователю root использовать двухфакторную аутентификацию, измените настройку PermitRootLogin на yes. Значения PermitRootLogin no или PermitRootLogin prohibit-password не подойдут.
PermitRootLogin yes
После этого внесите следующую строку в конец файла. Это сообщает SSH-демону, что пользователь должен пройти аутентификацию как с помощью публичного ключа, так и с использованием Challenge-Response.
AuthenticationMethods publickey, keyboard-interactive
Сохраните файл и закройте его. Затем внесите изменения в файл конфигурации PAM для SSH-демона.
sudo nano /etc/pam. d/sshd
В верхней части данного файла вы найдете строку, касающуюся аутентификации по паролю, при условии, что параметр ChallengeResponseAuthentication установлен на yes. Рекомендуется закомментировать эту строку, так как для аутентификации мы будем использовать SSH-ключ вместо пароля.
@include common-auth
Для активации двухфакторной аутентификации в SSH, вставьте следующие две строки.
# двухфакторная аутентификация через Google Authenticator auth required pam_google_authenticator. so

Сохраните файл и закройте его. После этого перезапустите SSH-демон, чтобы изменения начали действовать.
sudo systemctl restart ssh
Теперь для доступа потребуется использовать SSH-ключ и код из Google Authenticator.
Заметки
- Каждому пользователю на вашем сервере Ubuntu необходимо выполнить команду.
google-authenticatorОтсканируйте QR-код для активации двухфакторной аутентификации. Если пользователь не завершил настройку, при попытке входа возникнет ошибка с сообщением «Доступ запрещен (keyboard-interactive)».
- Аварийный код Scratch представляет собой ваш запасной код. В случае утери телефона вы сможете ввести один из пяти резервных кодов вместо одноразового пароля для завершения двухфакторной аутентификации. Каждый из этих кодов предназначен для однократного использования.
- Чтобы сменить секретный ключ, достаточно зайти на сервер и выполнить команду ещё раз.
google-authenticatorдля редактирования файла
~/.google_authenticator.
- Одноразовый пароль создается на основе общего секретного ключа и актуального времени, поэтому важно настроить синхронизацию времени NTP на вашем сервере Ubuntu для обеспечения точности. Ранее допускалась разница во времени до 4 минут между сервером и мобильным приложением, однако сервер и приложение TOTP могут находиться в разных часовых поясах.
Как деактивировать двухфакторную аутентификацию для SSH.
Внесите изменения в файл настроек PAM для службы SSH.
sudo nano /etc/pam. d/sshd
Пожалуйста, оставьте следующий фрагмент без комментариев.
auth required pam_google_authenticator. so
Сохраните изменения и закройте документ. Если вы внесли следующую строку в файл,
/etc/ssh/sshd_config
,
AuthenticationMethods publickey, keyboard-interactive
исключите способ аутентификации
keyboard-interactive
.
AuthenticationMethods publickey
Сохраните изменения и закройте файл, после чего перезапустите SSH-демон.
sudo systemctl restart ssh
Итоги
Надеюсь, это руководство оказалось полезным для вас в настройке двухфакторной аутентификации SSH на серверах Ubuntu 22.04 и 20.04. Если вам понравился этот материал, не забудьте подписаться на нашу бесплатную рассылку. Также приглашаем вас следить за нами в Twitter или поставить лайк на нашей странице в Facebook.

