SSH с двухфакторной аутентификацией через Google Authenticator в Ubuntu

SSH — один из самых распространённых способов удалённого доступа к серверу. Чтобы усилить безопасность, можно добавить двухфакторную аутентификацию (2FA) через Google Authenticator с использованием PAM. Эта инструкция показывает, как правильно это сделать в Ubuntu.
Что потребуется
- Ubuntu Server или Desktop (современная версия)
- Доступ по SSH или к терминалу
- root-доступ (или
sudo) - Приложение Google Authenticator / Aegis / OTP Auth на телефоне
Установка PAM-модуля
Подключитесь к серверу по SSH или через терминал и выполните:
sudo apt update
sudo apt install libpam-google-authenticatorНастройка пользователя
Выполните команду от имени пользователя, для которого будет активирован 2FA:
google-authenticatorОтветьте на вопросы:
- Time-based tokens? → y
- Update your .google_authenticator file? → y
- Disallow multiple uses? → y
- Enable rate limiting? → y
Отсканируйте QR-код через приложение 2FA или введите секретный ключ вручную.
Настройка PAM
Откройте PAM-конфигурацию SSH:
sudo nano /etc/pam.d/sshdДобавьте в начало файла:
auth required pam_google_authenticator.soНастройка sshd_config
Откройте конфигурацию SSH:
sudo nano /etc/ssh/sshd_configУбедитесь, что заданы следующие параметры:
Port 22
UsePAM yes
KbdInteractiveAuthentication yes
AuthenticationMethods keyboard-interactive
PasswordAuthentication no
ChallengeResponseAuthentication yesПроверка и перезапуск
Проверьте корректность конфигурации:
sudo /usr/sbin/sshd -tЕсли ошибок нет — перезапустите SSH-сервис:
sudo systemctl restart sshПроверка подключения
Подключитесь по SSH:
ssh username@your.server.ipПоявится запрос:
Verification code:Введите код из приложения Google Authenticator.
Возможные ошибки
1. Permission denied, даже при верном коде
Проверьте параметры в sshd_config:
AuthenticationMethods keyboard-interactiveKbdInteractiveAuthentication yesUsePAM yesPasswordAuthentication no
2. QR-код не отображается
Используйте терминалы с графикой (wezterm, iTerm2, kitty) или введите ключ вручную.
3. sshd не запускается
Проверьте статус:
sudo systemctl status sshПосмотрите журнал:
sudo journalctl -xeu sshИ проверьте конфиг:
sudo /usr/sbin/sshd -tФинальная конфигурация
/etc/ssh/sshd_config
Port 22
UsePAM yes
KbdInteractiveAuthentication yes
AuthenticationMethods keyboard-interactive
PasswordAuthentication no
ChallengeResponseAuthentication yes/etc/pam.d/sshd
auth required pam_google_authenticator.so
@include common-auth
@include common-account
@include common-session
@include common-passwordЗаключение
С двухфакторной аутентификацией SSH становится значительно безопаснее. Настройка занимает несколько минут, но существенно снижает риск несанкционированного доступа. Важно правильно настроить PAM и параметры SSH для корректной работы 2FA.