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

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

Настройка и использование FIDO2/WebAuthn для аутентификации в Termux

FIDO2 и WebAuthn – это открытые стандарты, позволяющие использовать аппаратные токены (например, YubiKey) для безпарольной аутентификации. В Termux, который предоставляет полноценный Linux‑окружение на Android, эти технологии открывают новые возможности по защите SSH‑доступа, sudo и других сервисов. В статье рассмотрим полную настройку от установки зависимостей до тестирования аутентификации.

Что понадобится

  • Устройство Android с установленным Termux (рекомендовано Android 9+).
  • Аппаратный токен FIDO2 (YubiKey 5, SoloKeys, Nitrokey 3 и др.).
  • Подключение к Интернету для установки пакетов.
  • Базовые навыки работы в терминале.

Установка базовых пакетов

Вначале обновим репозитории и установим необходимые утилиты:

apt update && apt upgrade -y
apt install -y git curl wget gnupg build-essential libssl-dev libpcsclite-dev pcscd

Запустим демон PC/SC, который отвечает за работу смарт‑карт и токенов:

pcscd --foreground

Для постоянного автозапуска можно добавить pcscd в ~/.bashrc:

echo "pcscd --daemon" >> ~/.bashrc

Установка libfido2 и pam_u2f

Библиотека libfido2 реализует протокол FIDO2, а модуль PAM pam_u2f позволяет интегрировать токен в систему аутентификации.

Скомпилируем их из исходников (для Termux нет готовых пакетов):

# libfido2
cd $HOME && mkdir src && cd src
git clone https://github.com/Yubico/libfido2.git
cd libfido2
./bootstrap
./configure --prefix=$HOME/.termux-prefix
make -j$(nproc)
make install

# pam_u2f
cd $HOME/src
git clone https://github.com/Yubico/pam-u2f.git
cd pam-u2f
./bootstrap
./configure --prefix=$HOME/.termux-prefix
make -j$(nproc)
make install

Обратите внимание, что путь $HOME/.termux-prefix добавляем в переменную окружения PATH и LD_LIBRARY_PATH:

echo "export PATH=\$HOME/.termux-prefix/bin:\$PATH" >> ~/.bashrc
echo "export LD_LIBRARY_PATH=\$HOME/.termux-prefix/lib:\$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc

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

Создадим файл ~/.config/Yubico/u2f_keys, в котором будет храниться публичный ключ токена. Для этого используем утилиту pamu2fcfg, установленную вместе с pam_u2f:

mkdir -p ~/.config/Yubico
pamu2fcfg -d > ~/.config/Yubico/u2f_keys

Файл будет содержать строку вида:

username:base64(public_key):base64(key_handle):base64(app_id)

Убедитесь, что права доступа ограничены:

chmod 600 ~/.config/Yubico/u2f_keys

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

Отредактируем файлы PAM, расположенные в $PREFIX/etc/pam.d. В Termux они находятся в /data/data/com.termux/files/usr/etc/pam.d. Добавим модуль pam_u2f.so после проверок пароля.

# sudo
cat >> $PREFIX/etc/pam.d/sudo <<'EOF'
auth       sufficient   pam_u2f.so cue
EOF

# sshd (если используете openssh в Termux)
cat >> $PREFIX/etc/pam.d/sshd <<'EOF'
auth       sufficient   pam_u2f.so cue
EOF

Опция cue заставит PAM запросить токен только после неудачной попытки ввода пароля, что удобно для «двухфакторного» режима.

Настройка OpenSSH с поддержкой FIDO2

OpenSSH версии 8.2+ поддерживает аутентификацию по FIDO2 напрямую. Установим OpenSSH, если ещё не установлен:

apt install -y openssh

Сгенерируем ключ, привязанный к токену:

ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk -C "my-termux-key"

При генерации появится запрос на прикосновение к токену. После создания добавьте публичный ключ в ~/.ssh/authorized_keys на целевом сервере.

Для входа из Termux используем обычный ssh – клиент сам запросит токен.

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

Проверим работу sudo:

sudo -i

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

Тестируем SSH‑доступ к удалённому серверу, где ваш публичный ключ уже добавлен:

ssh user@host

Клиент запросит подтверждение через токен. После успешного подтверждения откроется сессия без ввода пароля.

Отладка и распространённые проблемы

  • pcscd не запущен – убедитесь, что демон работает в фоне или запустите его вручную.
  • Ошибка «cannot open shared object file» – проверьте, что путь к libfido2.so включён в LD_LIBRARY_PATH.
  • pamu2fcfg не находит токен – проверьте, поддерживает ли ваш токен режим U2F/FIDO2 и включён ли USB‑OTG (если токен подключён через кабель).
  • SSH‑подключение требует пароль – убедитесь, что на сервере включена PubkeyAuthentication yes и в AuthorizedKeysFile указан ваш ключ.

Заключение

Настройка FIDO2/WebAuthn в Termux позволяет превратить ваш Android‑устройство в полноценный Linux‑терминал с уровнем безопасности, сравнимым с настольными системами. Аппаратные токены защищают от фишинга, перебора паролей и обеспечивают удобный безпарольный вход в SSH, sudo и другие сервисы.

Если вы хотите ускорить процесс внедрения современных методов аутентификации в ваших проектах, получить консультацию по безопасности Linux‑окружений или настроить корпоративные решения на базе FIDO2, обратитесь к специалистам RybinskLab. Мы предоставляем услуги по установке, настройке и поддержке Termux, OpenSSH, PAM‑модулей и интеграции аппаратных токенов в инфраструктуру любой сложности.

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

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

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

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

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