SSH — один из самых распространённых способов удалённого доступа к серверу. Чтобы усилить безопасность, можно добавить двухфакторную аутентификацию (2FA) через Google Authenticator с использованием PAM. Эта инструкция показывает, как правильно это сделать в Ubuntu.
- Что потребуется
- Установка PAM-модуля
- Настройка пользователя
- Настройка PAM
- Настройка sshd_config
- Проверка и перезапуск
- Проверка подключения
- Возможные ошибки
- 1. Permission denied, даже при верном коде
- 2. QR-код не отображается
- 3. sshd не запускается
- Финальная конфигурация
- /etc/ssh/sshd_config
- /etc/pam.d/sshd
- Заключение
Что потребуется
- 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 или введите секретный ключ вручную.
Если QR-код не отображается, используйте секретный ключ вручную.
Настройка 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
Если указан password,keyboard-interactive
и PasswordAuthentication
отключён, вход невозможен.
Проверка и перезапуск
Проверьте корректность конфигурации:
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-interactive
KbdInteractiveAuthentication yes
UsePAM yes
PasswordAuthentication 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.