Как настроить двухфакторную аутентификацию для SSH в Linux

17.07.2025
Как настроить двухфакторную аутентификацию для SSH в Linux

По умолчанию SSH уже использует безопасную передачу данных между удалёнными компьютерами, но если вы хотите добавить дополнительный уровень безопасности для своих SSH-подключений, вы можете добавить модуль Google Authenticator (двухфакторная аутентификация), который позволяет вводить случайный одноразовый пароль (TOTP) при подключении к SSH-серверам. При подключении вам нужно будет ввести код подтверждения со своего смартфона или компьютера.

Google Authenticator — это модуль с открытым исходным кодом, который включает в себя реализацию токенов проверки с одноразовыми паролями (TOTP), разработанную Google.

Он поддерживает несколько мобильных платформ, а также PAM (подключаемый модуль аутентификации). Эти одноразовые пароли генерируются с использованием открытых стандартов, созданных OATH Инициативой по открытой аутентификации).

В этой статье я покажу вам, как настроить SSH для двухфакторной аутентификации в дистрибутивах Linux на базе RedHat и Debian, таких как Fedora, CentOS Stream, Rocky Linux, AlmaLinux, Ubuntu, Debian и Mint.

 

Установка Google Authenticator в Linux

Откройте компьютер, на котором вы хотите настроить двухфакторную аутентификацию, и установите следующие библиотеки PAM, а также библиотеки для разработки, необходимые для корректной работы модуля PAM с модулем Google Authenticator.

В системах на базе RedHat (RHEL, CentOS Stream, Rocky Linux, AlmaLinux) необходимо включить репозиторий EPEL и установить необходимые пакеты:

sudo dnf install epel-release -y
sudo dnf install google-authenticator qrencode-libs -y

 

В системах на базе Debian установите модуль Google Authenticator PAM с помощью следующей команды apt.

sudo apt install libpam-google-authenticator -y

Генерировать Токены аутентификации Google

После установки выполните следующую команду от имени пользователя, которого вы хотите защитить.

google-authenticator

 

Вам будет предложено ответить на ряд вопросов. В большинстве случаев просто введите "y" (да). Если что-то пойдёт не так, вы можете снова запустить команду, чтобы сбросить настройки.

После ответа на эти вопросы вы получите секретный ключ и коды экстренных ситуаций. Запишите эти данные, так как секретный ключ понадобится нам позже для настройки приложения Google Authenticator.

Вы можете увидеть такой результат:

Do you want authentication tokens to be time-based (y/n) y
Warning: pasting the following URL into your browser exposes the OTP secret to Google:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@tecmint%3Fsecret%3DCYZF2YF7HFGX55ZEPQYLHOO5JM%26issuer%3Dtecmint

Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.

Your new secret key is: CYZF2YF7HFGX55ZEPQYLHOM
Enter code from app (-1 to skip): -1
Code confirmation skipped

Your emergency scratch codes are:
83714291
53083200
80975623
57217008
77496339

 

Продолжайте отвечать "y" на все запросы о конфигурации:

Do you want me to update your "/root/.google_authenticator" file (y/n) y
Do you want to disallow multiple uses of the same authentication token? (y/n) y
Do you want to increase the window to about 4min? (y/n) y
Do you want to enable rate-limiting? (y/n) y
Генерировать Токены Аутентификации Google

Настройка SSH для использования Google Authenticator в Linux

Откройте файл конфигурации PAM ‘/etc/pam.d/sshd‘ и добавьте следующую строку в начало или перед любой строкой pam_permit.so:

auth required pam_google_authenticator.so nullok

 

Примечание: если SELinux включен, переместите файл .google_authenticator в папку с соответствующим контекстом SELinux (например, ~/.ssh/) и укажите полный путь:

auth required pam_google_authenticator.so secret=/home//.ssh/.google_authenticator nullok

 

Затем откройте файл конфигурации SSH ‘/etc/ssh/sshd_config‘ и убедитесь, что в нём заданы следующие параметры:

UsePAM yes
ChallengeResponseAuthentication yes

 

При желании вы можете включить двухфакторную аутентификацию и аутентификацию по ключу/паролю:

AuthenticationMethods publickey,keyboard-interactive

 

Наконец, перезапустите службу SSH, чтобы изменения вступили в силу.

sudo systemctl restart sshd

 

Настройка приложения Google Authenticator

Запустите приложение Google Authenticator на своём смартфоне. Нажмите + и выберите «Введите ключ настройки». Если у вас нет этого приложения, вы можете скачать и установить приложение Google Authenticator на свои устройства Android/iPhone/Blackberry.

Добавьте свою учётную запись «Имя» и введите «секретный ключ», сгенерированный ранее.

Он сгенерирует одноразовый пароль (код подтверждения), который будет постоянно меняться каждые 30 секунд на вашем телефоне.

Теперь попробуйте войти в систему через SSH, вам будет предложено ввести код Google Authenticator (код подтверждения) и пароль всякий раз, когда вы попытаетесь войти в систему через SSH. У вас есть только 30 секунд, чтобы ввести этот проверочный код; если вы пропустите его, будет восстановлен новый проверочный код.

login as: destroyer
Access denied
Using keyboard-interactive authentication.
Verification code:
Using keyboard-interactive authentication.
Password:
Last login: Tue Apr 12 02:21:44 2024 from 82.146.45.247
[root@destroyer ~]#

 

Если у вас нет смартфона, вы также можете использовать надстройку Authenticator для Firefox или настольное приложение TOTP, например KeePassXC или Authenticator App для Linux.

 

Важно: двухфакторная аутентификация работает при входе в SSH с использованием пароля. Если вы используете какой-либо закрытый/открытый ключ для SSH-сессии, двухфакторная аутентификация будет проигнорирована и вы войдёте в систему напрямую.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала