Порт 8022 — это стандартный порт SSH-сервера в Termux, и именно его указывают при подключении к мобильному устройству, когда на Android поднят X-сервер для вывода графического интерфейса Linux-приложений. Если при попытке соединения вы видите ошибку «Connection refused» на порту 8022, первое, что нужно проверить, — запущен ли вообще демон sshd в Termux и не закрыта ли сессия терминала.

Связка «X-сервер + Termux + порт 8022» — популярная схема для запуска графических Linux-приложений на смартфоне или планшете без root-доступа. В этой статье разберём, как устроена эта схема, как настроить каждый компонент и как диагностировать типичные сбои подключения.

Что такое X-сервер на Android и при чём тут порт 8022

X-сервер (X11) — это программный слой, который отрисовывает графический интерфейс. В классическом Linux он работает локально, но архитектура X11 изначально сетевая: приложение (X-клиент) может выполняться на одной машине, а картинка выводиться на другой. На Android роль X-сервера выполняют отдельные приложения — например, XServer XSDL или Termux:X11.

Termux при этом играет роль среды, где запускаются сами Linux-программы. Его SSH-демон sshd по умолчанию слушает порт 8022, а не стандартный 22 — это связано с тем, что порты ниже 1024 на Android недоступны без root-прав. Через это SSH-соединение можно пробрасывать X11-трафик (X11 forwarding) либо просто управлять устройством с компьютера.

  • 📱 Termux — терминальная среда с пакетным менеджером pkg;
  • 🖥️ Termux:X11 или XServer XSDL — приложение-X-сервер для вывода графики;
  • 🔌 Порт 8022 — точка входа SSH на устройстве;
  • 🔁 DISPLAY — переменная окружения, указывающая, куда выводить графику.
💡

Порт 8022 — это не настройка X-сервера, а стандартный порт SSH в Termux. X-сервер и SSH решают разные задачи, но часто используются в одной связке.

Подготовка Termux: установка и первый запуск SSH

Начните с обновления пакетов и установки OpenSSH. В Termux выполните:

pkg update && pkg upgrade

pkg install openssh

После установки задайте пароль командой passwd — без него подключение по паролю не сработает. Затем запустите демон:

sshd

Команда не выводит ничего при успехе — это нормально. Проверить, что сервер слушает порт, можно так:

netstat -tlnp 2>/dev/null | grep 8022

Если строки с 8022 нет — демон не запущен. Учтите, что sshd живёт в рамках сессии Termux: если система «убила» приложение в фоне, сервер остановится.

⚠️ Внимание: Android агрессивно выгружает фоновые процессы для экономии заряда. Добавьте Termux в исключения оптимизации батареи в настройках системы, иначе SSH-сервер будет отваливаться через несколько минут после блокировки экрана. Путь к этой настройке зависит от оболочки производителя (MIUI, One UI, ColorOS и т.д.).

☑️ Базовая проверка SSH на порту 8022

Выполнено: 0 / 5

Подключение к устройству с компьютера

Сначала узнайте IP-адрес устройства в локальной сети — командой ifconfig в Termux или через настройки Wi-Fi на Android. Имя пользователя Termux можно узнать командой whoami. Далее с компьютера подключайтесь так:

ssh -p 8022 имя_пользователя@IP_устройства

Обратите внимание на регистр флага: -p указывает порт. Если подключение отклоняется, проверьте по порядку: оба устройства в одной сети, sshd запущен, пароль введён верно, роутер не изолирует клиентов Wi-Fi друг от друга (функция AP isolation на некоторых роутерах блокирует такие соединения).

📊 С какой проблемой вы столкнулись при подключении к порту 8022?
Connection refused — сервер не отвечает
Отклоняет пароль
Соединение обрывается через пару минут
Не могу узнать IP или логин

Запуск X-сервера и вывод графики

Самый простой путь — приложение Termux:X11, которое разрабатывается как компаньон Termux. После его установки в Termux ставится пакет termux-x11-nightly (репозиторий x11-repo), а графические приложения запускаются с указанием дисплея:

export DISPLAY=:0

termux-x11 :0 &

Альтернатива — XServer XSDL: это самостоятельный X-сервер, который при запуске показывает на экране адрес дисплея (обычно вида :0). В Termux тогда нужно выставить переменную DISPLAY в соответствии с тем, что показал XSDL, и запускать графические программы. Точные значения зависят от версии приложения, поэтому сверяйтесь с тем, что выводится на экране самого X-сервера.

Ещё один вариант — X11 forwarding через SSH с флагом -X или -Y, но он требует поддержки на стороне клиента и настройки xauth, поэтому для мобильного сценария прямой запуск через Termux:X11 обычно удобнее.

💡

Если графическое приложение молча завершается, запустите его из терминала и читайте вывод: чаще всего причина в неверном DISPLAY или отсутствующей библиотеке, которую можно доустановить через pkg.

Сравнение способов вывода графики на Android

СпособСложность настройкиУскорение графикиКому подходит
Termux:X11СредняяЕсть аппаратное ускорениеОсновной вариант для Termux
XServer XSDLНизкаяОграниченоБыстрый старт, простые программы
VNC-сервер + клиентСредняяНет, картинка сжимаетсяУдалённый доступ к рабочему столу
SSH X11 forwardingВысокаяНетВывод отдельных окон на ПК

Выбор зависит от задачи: для локального запуска на самом устройстве удобнее Termux:X11, для доступа с другого компьютера — VNC или SSH-форвардинг.

Почему VNC медленнее X11

VNC передаёт готовую картинку экрана в сжатом виде, а X11 передаёт команды отрисовки. Поэтому при прокрутке и видео VNC заметно «плывёт», особенно по Wi-Fi. Для статичных окон разница менее заметна.

Типичные ошибки и их диагностика

Разберём симптомы, с которыми чаще всего сталкиваются при этой схеме.

  • 🚫 Connection refusedsshd не запущен или убит системой; перезапустите командой sshd;
  • 🔑 Permission denied — неверный пароль или логин; проверьте whoami и сбросьте пароль через passwd;
  • 🖼️ Cannot open display — не задана переменная DISPLAY или X-сервер не запущен;
  • ⏱️ Таймаут соединения — устройства в разных сетях или включена изоляция клиентов на роутере;
  • 💤 Обрыв через несколько минут — сработала оптимизация батареи, добавьте Termux в исключения.

⚠️ Внимание: открытый SSH-сервер на устройстве — это потенциальная точка входа. Не используйте простые пароли, не пробрасывайте порт 8022 в интернет через роутер без необходимости и останавливайте sshd командой pkill sshd, когда он не нужен.

Как настроить вход по ключу вместо пароля

Сгенерируйте ключ на компьютере (ssh-keygen), затем скопируйте публичный ключ в файл ~/.ssh/authorized_keys в Termux. После этого пароль при подключении не потребуется. Права на каталог .ssh должны быть 700, на authorized_keys — 600, иначе sshd проигнорирует ключ.

Безопасность и автозапуск

Если SSH и X-сервер нужны постоянно, удобно добавить запуск sshd в автостарт Termux. Для этого создайте скрипт в каталоге ~/.termux/boot/ (потребуется приложение Termux:Boot) или просто допишите команду в ~/.bashrc — тогда сервер будет стартовать при открытии терминала.

Для доступа вне домашней сети безопаснее использовать VPN (например, WireGuard) вместо открытого проброса порта. Прямое выставление порта 8022 в интернет с парольной аутентификацией — рискованная практика: такие серверы быстро находят сканеры ботнетов.

💡

Минимальный безопасный набор: сложный пароль или ключ, запрет проброса порта в интернет, остановка sshd, когда он не используется.

Часто задаваемые вопросы

Почему в Termux порт 8022, а не стандартный 22?

Порты ниже 1024 в Android доступны только системным процессам с root-правами. Termux работает без root, поэтому его sshd слушает непривилегированный порт 8022. Это поведение задано по умолчанию, но порт можно изменить в конфигурации sshd.

Можно ли запустить X-сервер без root-доступа?

Да. И Termux:X11, и XServer XSDL работают без root — они реализованы как обычные Android-приложения, которые принимают X11-соединения и рисуют окна на экране устройства.

Что делать, если ssh подключается, но графическое приложение не открывается?

Проверьте переменную DISPLAY командой echo $DISPLAY — она должна указывать на запущенный X-сервер. Также убедитесь, что сам X-сервер (Termux:X11 или XSDL) запущен и виден на экране устройства, а нужные библиотеки приложения установлены.

Как узнать IP-адрес устройства для подключения?

В Termux выполните ifconfig и найдите адрес интерфейса Wi-Fi (обычно wlan0). Либо откройте настройки Wi-Fi на Android и посмотрите свойства текущей сети — там указан IP.

SSH-соединение рвётся через пару минут после блокировки экрана. Что делать?

Это работа энергосбережения Android. Отключите оптимизацию батареи для Termux в настройках системы и, при необходимости, удерживайте wakelock командой termux-wake-lock (требуется пакет Termux:API для части функций).