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

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

Разработка скриптов для безопасного удалённого доступа к Linux‑серверу через Termux

Подробное руководство по созданию безопасных скриптов в Termux для удалённого доступа к Linux‑серверу: генерация SSH‑ключей, обратные туннели, автозапуск и усиление защиты.

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.

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

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

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