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‑модулей и интеграции аппаратных токенов в инфраструктуру любой сложности.