Termux – это мощный терминал для Android, позволяющий запускать полноценные Linux‑утилиты. С его помощью можно создать скрипт, который обеспечит безопасный удалённый доступ к вашему удалённому серверу, даже находясь за NAT или в сети без публичного IP. В статье мы пошагово разберём, как подготовить среду, сгенерировать SSH‑ключи, настроить обратный туннель и автоматизировать процесс.
Подготовка окружения в Termux
Для начала установим необходимые пакеты:
pkg update && pkg upgrade -y
pkg install openssh git curl nano -y
Проверим версию OpenSSH:
ssh -V
Если версия ниже 7.6, рекомендуется собрать более свежий клиент из исходников, но в большинстве случаев поставляемый пакет подходит.
Генерация SSH‑ключей
Создаём пару RSA‑ключей без пароля (для автоматизации) и сохраняем их в ~/.ssh:
mkdir -p ~/.ssh
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_termux -N ""
Полученный публичный ключ необходимо добавить в файл ~/.ssh/authorized_keys на удалённом сервере. Самый простой способ – скопировать его через ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_rsa_termux.pub user@remote-server.com
Если ssh-copy-id недоступен, используем обычный cat:
cat ~/.ssh/id_rsa_termux.pub | ssh user@remote-server.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Обратный SSH‑туннель (reverse tunnel)
Для доступа к серверу из сети, где он находится за NAT, удобно использовать обратный туннель. На сервере открываем прослушивание порта, например 2222:
ssh -N -R 2222:localhost:22 user@remote-server.com
Эту команду можно автоматизировать в скрипте, который будет запускаться при старте Termux.
Создание скрипта автозапуска
Создадим файл ~/start_ssh_tunnel.sh:
#!/data/data/com.termux/files/usr/bin/bash
# Путь к приватному ключу
KEY="~/.ssh/id_rsa_termux"
# Параметры подключения
REMOTE_USER="user"
REMOTE_HOST="remote-server.com"
REMOTE_PORT="22"
LOCAL_PORT="22"
TUNNEL_PORT="2222"
# Проверяем, запущен ли уже туннель
if pgrep -f "ssh -N -R $TUNNEL_PORT:localhost:$LOCAL_PORT" > /dev/null; then
echo "Туннель уже работает"
exit 0
fi
# Запускаем туннель в фоне
ssh -i $KEY -o "ServerAliveInterval=60" -o "ExitOnForwardFailure=yes" \
-N -R $TUNNEL_PORT:localhost:$LOCAL_PORT $REMOTE_USER@$REMOTE_HOST &
echo "Туннель запущен"
Сделаем скрипт исполняемым:
chmod +x ~/start_ssh_tunnel.sh
Для автозапуска при каждом открытии Termux добавим строку в файл ~/.bashrc:
echo "~/start_ssh_tunnel.sh" >> ~/.bashrc
Усиление безопасности соединения
1. Ограничение доступа по IP – в /etc/ssh/sshd_config на сервере указываем AllowUsers user@your-mobile-ip или используем sshd в сочетании с iptables:
iptables -A INPUT -p tcp -s --dport 2222 -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j DROP
2. Двухфакторная аутентификация – включаем Google Authenticator на сервере (github.com).
apt install libpam-google-authenticator -y
google-authenticator
# в /etc/pam.d/sshd добавляем строку
auth required pam_google_authenticator.so
3. Fail2Ban для защиты от перебора паролей:
apt install fail2ban -y
cat > /etc/fail2ban/jail.local <
4. UFW – простой firewall:
apt install ufw -y
ufw allow 22/tcp
ufw allow 2222/tcp
ufw enable
Автоматический перезапуск при падении соединения
Termux поддерживает crontab. Установим cronie и добавим задачу, которая будет проверять наличие процесса туннеля каждую минуту:
pkg install cronie -y
crontab -e
# добавить строку
* ~/start_ssh_tunnel.sh >/dev/null 2>&1
Запускаем демон cron:
sv-enable crond
Отладка и журналирование
Для удобства добавим логирование в скрипт:
LOGFILE="~/ssh_tunnel.log"
exec >> $LOGFILE 2>&1
... # остальная часть скрипта
Теперь все сообщения будут сохраняться в ~/ssh_tunnel.log, а при возникновении проблем можно быстро проанализировать их.
Заключение
С помощью Termux и небольшого набора скриптов можно обеспечить надёжный и безопасный удалённый доступ к вашему Linux‑серверу даже из сети без публичного IP. Мы рассмотрели генерацию SSH‑ключей, настройку обратного туннеля, автоматизацию запуска, усиление защиты и мониторинг работы. При правильной конфигурации такой подход минимизирует риск несанкционированного доступа и упрощает администрирование.
Если вам нужен профессиональный аудит безопасности, настройка постоянного VPN‑соединения, внедрение двухфакторной аутентификации или индивидуальная поддержка ваших мобильных DevOps‑процессов – обратитесь в RybinskLab. Мы предоставляем услуги консалтинга, разработки скриптов и полного сопровождения инфраструктуры под Android и Linux.