Когда я впервые настраивала сервер с доступом по 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 оказывался тем барьером, который никто не прошёл.