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

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

Настройка безопасного SSH‑сервера в Termux с двухфакторной аутентификацией

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.

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

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

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

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

Связаться со мной