We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Многофакторная аутентификация в Termux: настройка OTP и аппаратных токенов

Termux предоставляет полноценную Linux‑среду на Android‑устройствах. При работе с удалёнными серверами, управлении конфиденциальными данными или выполнении привилегированных команд многофакторная аутентификация (MFA) становится обязательным требованием безопасности. В статье мы разберём два самых популярных подхода к MFA в Termux:

  • Одноразовые пароли (OTP) по стандартам TOTP и HOTP с помощью google-authenticator;
  • Аппаратные токены (YubiKey, Nitrokey) через libpam-u2f и pam-u2f.

Все команды адаптированы под Termux, где пакеты устанавливаются через pkg и apt.

1. Подготовка среды Termux

Перед началом убедитесь, что у вас актуальная версия Termux и репозитории включены:

pkg update && pkg upgrade -y
pkg install -y git curl wget proot-distro

Для работы с PAM нам потребуется установить termux-tools и libpam из репозитория termux:

pkg install -y libpam libpam-dev termux-tools

После установки откройте новый сеанс, чтобы переменные окружения обновились.

2. Настройка OTP (TOTP/HOTP) через Google Authenticator

OTP‑коды генерируются по алгоритму TOTP (Time‑Based One‑Time Password) и хранятся в приложении‑генераторе (Google Authenticator, Authy, Aegis и т.п.).

2.1 Установка пакета

pkg install -y libpam-google-authenticator

2.2 Генерация секретного ключа

Запустите интерактивный мастер, который создаст файл .google_authenticator в домашней директории:

google-authenticator -t -d -f -r 3 -R 30 -w 3

Параметры:

  • -t — использовать TOTP;
  • -d — запрещать повторное использование кода;
  • -f — принудительно перезаписать файл, если он существует;
  • -r 3 — разрешить 3 попытки ввода;
  • -R 30 — блокировать на 30 секунд после неудачных попыток;
  • -w 3 — окна влево/вправо (плюс‑минус 3 периода).

Сохраните QR‑код (отображённый в терминале) в приложение‑генератор, либо скопируйте секретный ключ вручную.

2.3 Интеграция с PAM для SSH

Отредактируйте файл /data/data/com.termux/files/usr/etc/pam.d/sshd (если его нет – создайте):

auth required pam_google_authenticator.so nullok

Параметр nullok позволяет пользователям без настроенного OTP входить без кода (удобно для администраторов). При необходимости можно убрать его, чтобы требовать OTP у всех.

2.4 Настройка OpenSSH

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

nano $HOME/.ssh/sshd_config

Убедитесь, что включены следующие директивы:

ChallengeResponseAuthentication yes
UsePAM yes

Перезапустите SSH‑демон (в Termux он запускается как сервис):

sv restart sshd

Теперь при подключении к Termux по SSH будет запрашиваться пароль пользователя, а затем одноразовый код из приложения‑генератора.

3. Аппаратные токены (YubiKey, Nitrokey) через libpam-u2f

Аппаратные токены обеспечивают более высокий уровень защиты, так как требуют физического устройства.

3.1 Установка зависимостей

pkg install -y libu2f-host libu2f-server libpam-u2f

3.2 Регистрация токена

Подключите YubiKey (или совместимый токен) к USB‑OTG‑адаптеру. Затем выполните:

pamu2fcfg > $HOME/.config/u2f_keys

Команда pamu2fcfg запросит касание токена, после чего запишет в файл публичный ключ в формате base64. При необходимости можно добавить несколько токенов, каждый в новой строке.

3.3 Настройка PAM для sudo и ssh

Для sudo откройте /data/data/com.termux/files/usr/etc/pam.d/sudo и добавьте строку:

auth required pam_u2f.so authfile=$HOME/.config/u2f_keys cue

Для SSH‑подключений отредактируйте /data/data/com.termux/files/usr/etc/pam.d/sshd (если уже есть строка с pam_google_authenticator.so, оставьте её – будет использоваться комбинированный MFA):

auth required pam_u2f.so authfile=$HOME/.config/u2f_keys cue

Опция cue заставит PAM вывести инструкцию «Touch your security key». При желании можно добавить debug для журналирования.

3.4 Тестирование

Для проверки работы токена выполните:

sudo -v

После ввода пароля система запросит касание YubiKey. Если всё настроено правильно, привилегия будет предоставлена.

4. Комбинирование OTP и аппаратных токенов

Для максимальной защиты рекомендуется требовать оба фактора – OTP и токен. В файлах PAM порядок строк определяет последовательность запросов. Пример для SSH:

# /data/data/com.termux/files/usr/etc/pam.d/sshd
auth required pam_google_authenticator.so nullok
auth required pam_u2f.so authfile=$HOME/.config/u2f_keys cue

При такой конфигурации пользователь сначала вводит пароль, затем OTP‑код, а в конце – касание токена.

5. Отладка и журналирование

Для диагностики проблем включите детальное логирование PAM:

export PAM_DEBUG=1

Запуск SSH‑сессии с повышенной детализацией:

ssh -vvv user@android-device

Сообщения PAM будут записаны в системный журнал Termux (logcat), который можно просмотреть командой:

logcat | grep pam

Для токенов полезно проверять статус через pamu2fcfg -v.

Заключение

Многофакторная аутентификация в Termux не только повышает безопасность мобильных рабочих станций, но и позволяет интегрировать Android‑устройства в корпоративные политики доступа. Мы рассмотрели настройку OTP‑кодов с помощью google-authenticator и работу с аппаратными токенами через pam_u2f, а также показали, как комбинировать оба метода для SSH и sudo.

Если вам требуется профессиональная настройка MFA, аудит безопасности мобильных Linux‑сред или автоматизация развертывания Termux‑контейнеров, обратитесь в RybinskLab. Мы предоставляем услуги:

  • Консультации и обучение по безопасному использованию Termux;
  • Разработку кастомных PAM‑модулей и скриптов автоматизации;
  • Поддержку и сопровождение инфраструктуры мобильных устройств.

Свяжитесь с нами через сайт rybinsklab.com или по электронной почте info@rybinsklab.com – мы поможем сделать ваш мобильный Linux надёжным и удобным в эксплуатации.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

Связаться со мной
Поддержать проект