Настройка Google Authenticator для SSH
Быстрые ссылки
- Установка Google Authenticator
- Создание ключа аутентификации
- Активация Google Authenticator
К чему это служит
Этот гид показывает, как добавить второй фактор (временные одноразовые коды — TOTP) к входу по SSH. После настройки при входе потребуется и пароль, и код из приложения на телефоне. Google Authenticator — открытый проект: проверка происходит только на сервере и на вашем устройстве, данные не отправляются в Google.
Установка Google Authenticator
Для интеграции нам нужен открытый PAM-модуль Google Authenticator. PAM означает «подключаемый модуль аутентификации» — способ гибко добавлять разные методы аутентификации в Linux.
В Ubuntu модуль доступен в репозитории и устанавливается одной командой. Если в вашей дистрибуции пакета нет, придётся скачать исходники и собрать модуль вручную.
Выполните команду (под sudo):
sudo apt-get install libpam-google-authenticatorВажно: эта команда устанавливает только PAM-модуль. Чтобы 2FA работал для SSH, нужно вручную включить его в конфигурации PAM и SSH (см. разделы ниже).
Создание ключа аутентификации
Войдите под тем пользователем, под которым вы планируете подключаться по SSH, и выполните команду:
google-authenticatorКоманда создаст секрет пользователя и предложит ответить на несколько вопросов. Рекомендации при ответах:
- Разрешите обновление файлов (ответьте y), чтобы сохранить секрет и параметры.
- Ограничение повторных попыток и уменьшение допустимого окна времени повышают безопасность, но усложняют восстановление при проблемах.

Сохраните «аварийные» одноразовые коды (scratch codes) в надёжном месте — это одноразовые коды для восстановления при утере телефона.

Добавьте секрет в приложение Google Authenticator на телефоне или используйте сканирование QR-кода. После этого на телефоне будет постоянно генерироваться шестизначный код, действующий короткое время.

Если вы намерены подключаться как несколько пользователей — выполните google-authenticator для каждого пользователя отдельно; у каждого будет свой секрет и коды.
Активация Google Authenticator для SSH
- Откройте файл /etc/pam.d/sshd и добавьте строку в начало (или рядом с другими auth-строками):
auth required pam_google_authenticator.so- Откройте /etc/ssh/sshd_config и найдите параметр ChallengeResponseAuthentication. Убедитесь, что он включён:
ChallengeResponseAuthentication yesЕсли строки нет — добавьте её.
- Перезапустите SSH-сервис, чтобы изменения вступили в силу:
sudo service ssh restartПосле этого при подключении по SSH вас будут запрашивать пароль и код из приложения.

Важно: перед завершением настройки откройте отдельный сеанс SSH и проверьте, что вход работает. Не закрывайте действующий сеанс до успешной проверки, чтобы избежать блокировки доступа.
Рекомендации по безопасности и надёжности
- Сохраняйте аварийные коды в зашифрованном менеджере паролей или в офлайновом хранилище. Каждый код можно использовать только один раз.
- Настройте ограничения попыток входа и fail2ban для защиты от брутфорса.
- При использовании авторизации по ключу SSH можно комбинировать ключи и 2FA: заставляйте вводить код только для паролей или для всех входов по SSH в зависимости от политики.
- Планируйте процедуру восстановления доступа: кто имеет право сбросить 2FA, какие логи и проверки нужны.
Когда это не подходит
- Если у вас полностью автоматизированные скрипты, которые требуют неразрывного доступа по SSH без интерактивного ввода, TOTP усложнит работу. В таких случаях используйте ключи SSH с ограничениями по команде и привилегиям.
- Если у пользователей нет защищённых телефонов или корпоративной политики запрещает личные устройства, рассмотрите аппаратные ключи U2F/FIDO2 или централизованные решения 2FA.
Альтернативные подходы
- Аппаратные токены (U2F/FIDO2): выше безопасность и удобство для корпоративных пользователей.
- Централизованные решения (например, RADIUS/LDAP + 2FA): удобны при большом парке серверов и единой политике.
- One-time passwords через SMS: проще, но менее безопасно из-за уязвимостей оператора и перехвата.
Чек-листы по ролям
Администратор:
- Установить libpam-google-authenticator.
- Включить строку pam_google_authenticator в /etc/pam.d/sshd.
- Включить ChallengeResponseAuthentication в /etc/ssh/sshd_config.
- Перезапустить SSH и протестировать для нескольких учётных записей.
Пользователь:
- Выполнить google-authenticator под своей учётной записью.
- Сохранить аварийные коды в безопасном месте.
- Добавить аккаунт в приложение (сканировать QR или ввести секрет вручную).
Офис безопасности/операции:
- Определить правила восстановления доступа и назначить ответственных.
- Внедрить мониторинг и оповещения о неудачных входах.
План отката и сценарий инцидента
Если после включения 2FA вы случайно потеряли доступ:
- Используйте действующий сеанс администратора (если открыт) для отключения pam_google_authenticator в /etc/pam.d/sshd или временного изменения sshd_config.
- Если нет текущих сеансов, восстановите доступ через консоль хоста (KVM, облачную панель) и откатьте изменения.
- После восстановления доступа сбросьте секрет проблемного пользователя и создайте новые резервные коды.
Критерии приёмки
- Пользователь проходит вход по паролю и коду из приложения.
- Аварийные коды созданы и сохранены пользователем.
- Документация и план восстановления утверждены и доступны.
Небольшой глоссарий
- PAM — модульная система аутентификации в Unix-подобных системах.
- TOTP — временные одноразовые пароли (Time-based One-Time Password).
- Scratch codes — резервные одноразовые коды для восстановления доступа.
Итог
Внедрение Google Authenticator для SSH даёт существенный прирост безопасности при относительно простой настройке: установка PAM-модуля, генерация секретов для пользователей и включение проверки в конфигурации SSH. Обязательно подготовьте процедуру восстановления и протестируйте все изменения, прежде чем отключить существующие сессии.
Важно: выбирайте метод 2FA, который соответствует политике вашей организации и условиям использования (автоматизация, мобильные устройства, аппаратные токены).
Похожие материалы
Как изменить голос Alexa и настройки речи
Установить VirtualBox и создать VM на Linux
Как пожаловаться на пользователя в Snapchat
Связывание заметок в Apple Notes на iPhone
Лазерная гравировка по стеклу — практическое руководство