В этом руководстве вы узнаете, как настроить двухфакторную аутентификацию SSH на сервере CentOS/RHEL с помощью популярного приложения Google Authenticator. Этот метод значительно повысит уровень безопасности SSH-сервиса на вашем сервере CentOS/RHEL.
Содержание статьи
- 1 Двухфакторная аутентификация функционирует следующим образом: для подтверждения личности пользователя требуется два разных элемента. Первым является обычный пароль, а вторым — дополнительный код или подтверждение, получаемое через другой канал, например, SMS-сообщение или специальное приложение. Такой подход обеспечивает дополнительную защиту учетной записи.
- 2 Установите и сконфигурируйте Google Authenticator на сервере CentOS/RHEL.
- 3 Конфигурация SSH-демона для интеграции с Google Authenticator.
- 4 Примечания
- 5 Как деактивировать двухфакторную аутентификацию SSH на серверах CentOS/RHEL.
- 6 Заключение
Двухфакторная аутентификация функционирует следующим образом: для подтверждения личности пользователя требуется два разных элемента. Первым является обычный пароль, а вторым — дополнительный код или подтверждение, получаемое через другой канал, например, SMS-сообщение или специальное приложение. Такой подход обеспечивает дополнительную защиту учетной записи.
Обычно для доступа к удалённому серверу CentOS/RHEL достаточно ввести пароль или использовать SSH-ключ. Однако при использовании двухфакторной аутентификации (2FA) требуется два этапа проверки, поэтому для входа необходимо также ввести временный одноразовый пароль. Этот пароль генерируется с помощью алгоритма TOTP, который является стандартом IETF. Сегодня многие веб-сайты и сервисы, такие как Facebook, Google и Twitter, поддерживают 2FA для повышения безопасности аккаунтов. Включение 2FA для вашего SSH-сервера также является хорошей практикой.
Данное пособие научит вас, как выполнить настройку.
- Двухфакторная аутентификация с использованием пароля
- Аутентификация с использованием открытого ключа и двухфакторной проверки
Примечание: В данной статье мы будем использовать серверное программное обеспечение с открытым исходным кодом под названием google-authenticator, которое можно установить из репозитория EPEL. Компания Google не принимает участия в процессе аутентификации. Ни серверное программное обеспечение, ни мобильное приложение не нуждаются в сетевом подключении.
Установите и сконфигурируйте Google Authenticator на сервере CentOS/RHEL.
Авторизуйтесь на вашем сервере CentOS/RHEL и выполните команды для установки Google Authenticator из репозитория EPEL (Extra Packages for Enterprise Linux). Утилита qrencode нужна для создания QR-кода в терминале.
sudo dnf install - y epel-release sudo dnf install - y google-authenticator qrencode qrencode-libs
После этого выполните команду google-authenticator для генерации нового секретного ключа в директории.~/.ssh/.
google-authenticator - s ~/.ssh/google_authenticator
Когда вам зададут вопрос: «Хотите ли вы установить временные токены аутентификации?» ответьте «да».
Затем вам будет представлен QR-код, который необходимо отсканировать с помощью приложения TOTP на вашем мобильном устройстве.

Я советую воспользоваться двумя приложениями:
- Google Authenticator — это одно из самых популярных мобильных приложений для генерации TOTP-кодов. Его можно загрузить через Google Play или Apple App Store на вашем смартфоне.
- Мобильное приложение Google Authenticator не имеет открытого исходного кода. Если вы не хотите полагаться на Google, рассмотрите возможность использования FreeOTP — это приложение TOTP с открытым исходным кодом, созданное компанией Red Hat.
Сканируйте QR-код с помощью приложения Google Authenticator или FreeOTP на вашем мобильном устройстве. Учтите, что для успешного сканирования полного QR-кода необходимо увеличить окно терминала.
QR-код служит секретным ключом, известным исключительно вашему SSH-серверу и мобильному приложению TOTP. После сканирования QR-кода на экране вашего телефона появится шестизначный одноразовый пароль, который обновляется каждые 30 секунд. Этот одноразовый пароль необходимо ввести в терминал.

Теперь в терминале вы должны увидеть код для аварийного доступа. Обязательно сохраните эту информацию в надежном месте на случай потери телефона.

В таком случае вы можете ввести y, чтобы ответить на все остальные вопросы. Это приведет к обновлению конфигурационного файла вашего Google Authenticator, отключит повторное использование одного и того же токена аутентификации, увеличит временной интервал и активирует ограничение частоты для защиты от атак с подбором паролей.

Конфигурация SSH-демона для интеграции с Google Authenticator.
- Двухфакторная аутентификация с использованием пароля
- Аутентификация с использованием открытых ключей и двухфакторной аутентификации.
Двухфакторная аутентификация с использованием пароля
Если вы не применяете SSH-ключ, следуйте данным указаниям.
Откройте конфигурационный файл SSH-сервера.
sudo nano /etc/ssh/sshd_config
Найдите в файле указанные два параметра и проверьте, чтобы оба были установлены на yes.
UsePAM yes ChallengeResponseAuthentication yes
PAM расшифровывается как модуль для подключаемой аутентификации. Он предлагает удобный способ интеграции различных методов аутентификации в систему Linux. Для активации Google Authenticator с помощью SSH требуется включить PAM и использовать метод «вызов-ответ» для аутентификации.
Чтобы разрешить пользователю root использовать двухфакторную аутентификацию, необходимо найти параметр PermitRootLogin и установить его в значение yes. Он не должен быть установлен как PermitRootLogin no или PermitRootLogin prohibit-password.
PermitRootLogin yes
Сохраните файл и закройте его. Затем внесите изменения в файл правил PAM для SSH-сервера.
sudo nano /etc/pam. d/sshd
Для активации двухфакторной аутентификации (2FA) в SSH, необходимо добавить эти две строки.
#двухфакторная аутентификация через Google Authenticator auth required pam_google_authenticator. so secret=$/.ssh/google_authenticator

Сохраните файл и закройте его. После этого перезапустите SSH-демон, чтобы изменения были применены.
sudo systemctl restart sshd
С этого момента для доступа к демон SSH потребуется ввод пароля пользователя и кода подтверждения, который представляет собой одноразовый пароль, созданный с помощью Google Authenticator. На следующем изображении представлен процесс входа в SSH с рабочего стола Ubuntu на сервер CentOS Linux.
Аутентификация с использованием открытых ключей и двухфакторной аутентификации.
При использовании SSH-ключа для доступа к серверу SSH, выполните указанные ниже шаги.
Запустите файл конфигурации SSH-сервера.
sudo nano /etc/ssh/sshd_config
Проверьте в файле два указанных параметра и убедитесь, что оба имеют значение yes.
UsePAM yes ChallengeResponseAuthentication yes
PAM расшифровывается как модуль аутентификации, позволяющий подключать разные методы аутентификации к вашей Linux-системе. Для интеграции Google Authenticator с SSH нужно активировать PAM и настроить аутентификацию по принципу вопрос-ответ.
Чтобы разрешить пользователю root использовать двухфакторную аутентификацию, необходимо найти настройку PermitRootLogin и изменить её значение на yes. Оно не должно быть установлено на PermitRootLogin no или PermitRootLogin prohibit-password.
PermitRootLogin yes
После этого добавьте строку в конец файла. Это уведомит демон SSH о том, что пользователю необходимо пройти аутентификацию как с помощью открытого ключа, так и через метод вызова-ответа.
AuthenticationMethods publickey, keyboard-interactive
Сохраните и закройте документ, а затем внесите изменения в файл конфигурации PAM для SSH-демона.
sudo nano /etc/pam. d/sshd
Для активации двухфакторной аутентификации (2FA) в SSH, необходимо добавить эти две строки.
#двухфакторная аутентификация через Google Authenticator auth required pam_google_authenticator. so secret=$/.ssh/google_authenticator
Кроме того, закомментируйте следующую строку, добавив # в начале, чтобы отключить проверку пароля.
auth substack password-auth

Сохраните файл и закройте его. После этого перезапустите SSH-демон, чтобы изменения были применены.
sudo systemctl restart sshd
Теперь для доступа в систему необходимо применять SSH-ключ и код подтверждения из Google Authenticator.
Примечания
- Все пользователи вашего сервера CentOS/RHEL обязаны выполнить команду google-authenticator — s.~Чтобы использовать двухфакторную аутентификацию, необходимо зайти в папку. ssh/google_authenticator и отсканировать QR-код. Если пользователь не настроил эту функцию и попытается войти в систему, появится сообщение об ошибке: “Доступ запрещен (keyboard-interactive)”.
- Аварийный код служит вашим запасным вариантом. В случае потери телефона вы сможете использовать один из пяти аварийных кодов вместо одноразового пароля для завершения двухфакторной аутентификации. Эти коды предназначены для использования только один раз.
- Чтобы изменить секретный ключ, достаточно зайти на свой сервер и заново выполнить команду google-authenticator — s.~/.ssh/google_authenticator для внесения изменений в файл.~/.ssh/google_authenticator.
Как деактивировать двухфакторную аутентификацию SSH на серверах CentOS/RHEL.
Измените файл конфигурации правил PAM для SSH-демона.
sudo nano /etc/pam. d/sshd
Поставьте комментарий на следующей строке.
auth required pam_google_authenticator. so secret=$/.ssh/google_authenticator
Сохраните изменения и закройте файл. Если вы включили следующую строку в файл /etc/ssh/sshd_config,
AuthenticationMethods publickey, keyboard-interactive
Исключите способ аутентификации keyboard-interactive.
AuthenticationMethods publickey
Сохраните изменения в файле и закройте его. После этого перезапустите SSH-демон.
sudo systemctl restart sshd
Заключение
Буду надеяться, что данный учебник способствовал успешной настройке двухфакторной аутентификации SSH на сервере CentOS/RHEL. Как всегда, если вам показалась эта статья полезной, подписывайтесь на нашу бесплатную рассылку, чтобы получать больше интересных материалов.

