Настройка 2FA для SSH (через Google Authenticator)

ГлавнаяНастройка 2FA для SSH (через Google Authenticator)

Содержание

Когда я впервые настраивала сервер с доступом по SSH, одним из первых советов в гайдах был: «обязательно включи двухфакторную аутентификацию». Тогда я подумала — зачем, если у меня уже стоит ключ доступа? Но стоило серверу попасть под скан бота, как всё стало очевидно. В этой статье я покажу, как просто добавить 2FA через Google Authenticator на ваш VPS, чтобы повысить безопасность.


Зачем нужна двухфакторная аутентификация на SSH?

Пароли, даже длинные, можно подобрать. SSH-ключи — надёжны, но что если кто-то получит доступ к вашему устройству? А вот 2FA — это ещё один уровень защиты, особенно если вы храните важные данные на VPS. Даже если логин и ключ окажутся в руках злоумышленника, без одноразового кода он не попадёт на сервер.


Что потребуется:

  • VPS с доступом по SSH (я использую Ubuntu 22.04, но подойдёт и Debian/CentOS);
  • root-доступ или sudo;
  • установленный SSH-сервер;
  • смартфон с Google Authenticator или аналогом (например, FreeOTP, Authy).

Шаг 1: Устанавливаем Google Authenticator на сервер

На Ubuntu:

sudo apt update sudo apt install libpam-google-authenticator

На CentOS 7:

yum install google-authenticator -y

После установки запускаем генератор конфигурации:

google-authenticator

Вы увидите QR-код и секретный ключ. Отсканируйте код через приложение. Система задаст несколько вопросов:

  • «Update the .google_authenticator file?» — Yes;
  • «Disallow multiple uses?» — Yes (чтобы код не повторно использовался);
  • «Increase the time skew?» — Yes;
  • «Enable rate limiting?» — Yes (защита от перебора).

Шаг 2: Включаем 2FA в PAM

Редактируем файл:

sudo nano /etc/pam.d/sshd

Добавляем в начало:

auth required pam_google_authenticator.so

Шаг 3: Разрешаем использование 2FA в SSH

Редактируем SSH-конфигурацию:

sudo nano /etc/ssh/sshd_config

Найдите и измените:

ChallengeResponseAuthentication yes

Также убедитесь, что:

UsePAM yes

Если вы используете только пароль:

PasswordAuthentication yes

Если с ключами, лучше оставить:

PasswordAuthentication no

Сохраняем файл и перезапускаем SSH:

sudo systemctl restart sshd

Шаг 4: Проверка работы

Подключитесь к серверу по SSH:

ssh user@ip

После ввода пароля или применения ключа вас попросят ввести одноразовый код из приложения. Если он правильный — доступ разрешён. Если нет — отклонён.


Советы из практики

  • Обязательно сохраните резервный ключ и коды восстановления — без них вы не попадёте на сервер.
  • Не ставьте 2FA сразу на root, сначала протестируйте на обычном пользователе.
  • Используйте Fail2Ban для дополнительной защиты от перебора.

Настройка двухфакторной аутентификации через Google Authenticator занимает меньше 10 минут, но добавляет важный уровень защиты. Я уже не раз сталкивалась с логами попыток взлома VPS — и 2FA оказывался тем барьером, который никто не прошёл.