Termux предоставляет полноценный Linux‑окружение прямо на Android‑устройстве. Одной из самых востребованных функций является возможность запустить SSH‑сервер и удаленно управлять смартфоном. В данной статье мы рассмотрим пошаговую настройку безопасного SSH‑сервера в Termux, включающего двухфакторную аутентификацию (2FA) на базе Google Authenticator и ряд рекомендаций по hardening.
1. Установка необходимых пакетов
pkg update && pkg upgrade -y
pkg install openssh openssh-server openssh-sftp-server -y
pkg install libpam-google-authenticator -y
pkg install termux-services -y
Пакет openssh содержит клиент и сервер, а libpam-google-authenticator – PAM‑модуль для генерации OTP‑кодов.
2. Генерация ключей SSH (по желанию)
Для повышения удобства и безопасности рекомендуется использовать публичные ключи вместо пароля.
ssh-keygen -t ed25519 -C "termux@$(hostname)"
Созданный публичный ключ будет находиться в ~/.ssh/id_ed25519.pub. Добавьте его в файл ~/.ssh/authorized_keys:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
3. Конфигурация SSH‑демона
Откройте файл ~/.ssh/config (если его нет – создайте) и внесите следующие изменения:
# ~/.ssh/config
Port 2222 # нестандартный порт
PermitRootLogin no # отключаем root‑логин
PasswordAuthentication no # запрет паролей (используем ключи)
ChallengeResponseAuthentication yes # включаем 2FA
UsePAM yes
Не забудьте создать директорию /data/data/com.termux/files/usr/etc/ssh/ (если её нет) и скопировать в неё конфигурационный файл sshd_config:
cp $PREFIX/etc/ssh/sshd_config $HOME/.ssh/sshd_config
sed -i 's/#Port 8022/Port 2222/' $HOME/.ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' $HOME/.ssh/sshd_config
sed -i 's/#ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' $HOME/.ssh/sshd_config
sed -i 's/#UsePAM no/UsePAM yes/' $HOME/.ssh/sshd_config
Сохраните изменения и перезапустите сервер.
4. Настройка PAM‑модуля для двухфакторной аутентификации
Отредактируйте файл /data/data/com.termux/files/usr/etc/pam.d/sshd (создайте, если отсутствует) следующим образом:
#%PAM-1.0
auth required pam_google_authenticator.so nullok
account required pam_permit.so
session required pam_permit.so
Опция nullok позволяет пользователям, у которых не настроен 2FA, входить без OTP. Для строгой политики её следует убрать.
5. Генерация секретного ключа Google Authenticator
Запустите утилиту google-authenticator от имени пользователя, под которым будет осуществляться вход (обычно u0_aXXX в Termux):
google-authenticator -t -d -f -r 3 -R 30 -w 3
Утилита выведет QR‑код и список резервных кодов. Сканируйте QR‑код приложением Google Authenticator (или любым совместимым TOTP‑клиентом).
6. Автоматический запуск SSH‑демона
Termux не поддерживает systemd, но предоставляет termux-services для управления фоновых процессов.
# Создаём скрипт запуска
cat > $HOME/.termux/boot/sshd-start.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
sshd -D &
EOF
chmod +x $HOME/.termux/boot/sshd-start.sh
# Добавляем в автозапуск
termux-service enable sshd-start
После перезагрузки устройства SSH‑демон будет запущен автоматически.
7. Тестирование соединения
С другого устройства выполните:
ssh -p 2222 -i ~/.ssh/id_ed25519 user@IP_устройства
После успешного обмена ключами система запросит OTP‑код из вашего TOTP‑клиента.
8. Дополнительные меры hardening
- Ограничьте доступ по IP. Добавьте в
sshd_configдирективуAllowUsers user@192.168.1.*или используйте firewall (iptables) внутри Termux. - Отключите парольную аутентификацию. Убедитесь, что параметр
PasswordAuthentication noустановлен. - Регулярно обновляйте пакеты. Выполняйте
pkg update && pkg upgrade -yминимум раз в неделю. - Логи и мониторинг. Просматривайте
/data/data/com.termux/files/usr/var/log/auth.logдля обнаружения подозрительных попыток.
9. Удаление SSH‑сервера
Если понадобится полностью убрать сервер, выполните:
termux-service disable sshd-start
pkg uninstall openssh libpam-google-authenticator -y
Заключение
Настройка SSH‑сервера в Termux с двухфакторной аутентификацией позволяет превратить ваш Android‑устройство в надёжный удалённый терминал, защищённый от неавторизованных подключений. Следуя изложенным шагам, вы получаете гибкую систему доступа с современными механизмами защиты.
Если вам требуется более глубокая настройка, интеграция с корпоративными VPN, аудит безопасности или автоматизация развертывания на нескольких устройствах, команда RybinskLab готова предоставить профессиональные услуги: разработка кастомных скриптов, настройка CI/CD для мобильных серверов, консультирование по кибербезопасности и поддержку 24/7.