- Android-смартфон с Wi-Fi (раздел «Отладка по Wi-Fi» есть в Android 11 и новее; на более старых прошивках беспроводной ADB включают через USB — сверьтесь с меню своей прошивки)
- Termux, установленный из F-Droid (сборка в Google Play разработчиками не поддерживается — сверьтесь с документацией Termux)
- приложение Tailscale из Google Play или F-Droid (актуальный источник загрузки сверьте на сайте Tailscale)
- компьютер с SSH-клиентом (Linux/macOS — встроенный терминал, Windows — OpenSSH Client или PuTTY)
- Android SDK Platform-Tools, то есть утилита adb, на компьютере
- аккаунт Tailscale

Tailscale — это оверлейная (mesh) сеть на базе WireGuard: каждое устройство получает постоянный адрес из диапазона 100.64.0.0/10 и доступно остальным участникам своей сети (tailnet) напрямую, без проброса портов. Root для этого не нужен: на Android приложение работает через системный VPN-сервис (VpnService), а Termux и adbd живут в обычном пользовательском пространстве.
SSH — протокол удалённого доступа к консоли. ADB (Android Debug Bridge) — отладочный мост: через него с компьютера выполняются команды в оболочке телефона, установка APK, скриншоты.
Чек-лист перед стартом:
adb version (пример вывода: Android Debug Bridge version 1.0.41; номер у вас будет свой)Если берёте б/у аппарат и хотите понять, сколько он ещё проживёт как рабочий терминал, пригодится гайд «Как узнать, сколько лет обновлений получит ваш Android-смартфон».
Если же задача шире — превратить телефон в полноценный Linux-терминал, смотрите «Как запустить Linux на Android без root: Termux, PRoot и ИИ-инструменты».
Что сделать: установите приложение Tailscale, войдите тем же аккаунтом, что и на компьютере, и нажмите подключение. В настройках Android включите для Tailscale «Always-on VPN» (постоянный VPN) — тогда туннель поднимается после перезагрузки.
Зачем: вы получаете адрес вида 100.x.y.z, который не меняется при переходе между Wi-Fi и мобильной сетью. Все дальнейшие команды — SSH и ADB — будут идти на этот адрес, а не на локальный 192.168.x.x, который меняется после каждого переподключения.
Как проверить: на телефоне в приложении статус Connected и адрес 100.x.y.z. На компьютере:
$ tailscale status
100.101.102.103 old-phone user@ android -
$ tailscale ping 100.101.102.103
pong from old-phone (100.101.102.103) via 192.168.1.42:41641
100.101.102.103 здесь — пример; подставляйте свой адрес. Ответ pong означает, что узлы видят друг друга. Если включён MagicDNS, вместо IP работает имя вида <имя-устройства>.<имя-tailnet>.ts.net — точный суффикс сверьте в админке Tailscale.
Почему это работает: Tailscale поднимает на телефоне интерфейс и маршрутизирует трафик до адресов 100.64.0.0/10 через шифрованный туннель, минуя NAT и файрвол оператора.

Что сделать: обновите пакеты, поставьте openssh, задайте пароль пользователя Termux и запустите демон sshd.
pkg update && pkg upgrade -y
pkg install openssh net-tools -y
passwd
whoami
sshd
pgrep -l sshd
netstat -tlnp | grep 8022
Пример вывода:
~ $ whoami
u0_a231
~ $ pgrep -l sshd
12453 sshd
~ $ netstat -tlnp | grep 8022
tcp 0 0 0.0.0.0:8022 0.0.0.0:* LISTEN
Зачем: whoami даёт имя пользователя, под которым нужно логиниться (u0_a231 — не root и не ваше имя из аккаунта Google). passwd задаёт пароль для SSH: без него вход невозможен. Порт 8022 — потому что порты ниже 1024 привилегированные, а Termux работает без root и занять :22 не может.
Затем зафиксируйте процесс, иначе Android усыпит Termux:
termux-wake-lock
В шторке появится уведомление Termux о удержании wakelock — это признак, что система не будет выгружать процесс.
Для автозапуска после перезагрузки (нужно приложение Termux:Boot из F-Droid) создайте скрипт:
mkdir -p ~/.termux/boot
cat > ~/.termux/boot/start-sshd <<'EOF'
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
sshd
EOF
chmod +x ~/.termux/boot/start-sshd
Как проверить: с компьютера войдите на телефон по адресу из Tailscale:
$ ssh -p 8022 u0_a231@100.101.102.103
u0_a231@100.101.102.103's password:
Welcome to Termux!
Вы должны увидеть приглашение Termux ~ $ и выполнить там uname -a — команда вернёт строку ядра Android. Почему это работает: sshd слушает порт 8022 на всех интерфейсах, включая интерфейс Tailscale, а трафик до 100.101.102.103 идёт внутри туннеля, поэтому порт не нужно открывать наружу.

Что сделать: включите отладку и спарьте компьютер с телефоном.
1. Настройки → О телефоне → «Номер сборки» — тапните 7 раз, пока не появится «Вы стали разработчиком».
2. Настройки → Система → Для разработчиков → Отладка по Wi-Fi → включить.
3. В том же разделе откройте «Сопряжение устройства с кодом» — на экране появятся адрес с портом и 6-значный код.
4. На компьютере выполните спаривание, подставив порт с экрана сопряжения:
$ adb pair 100.101.102.103:37123
Enter pairing code: 123456
Successfully paired to 100.101.102.103:37123 [guid=adb-XXXXXX]
5. Затем подключитесь по порту с главного экрана «Отладка по Wi-Fi» — он отличается от порта сопряжения:
$ adb connect 100.101.102.103:40555
connected to 100.101.102.103:40555
Зачем: после спаривания adbd принимает подключения без USB-кабеля, и вы управляете телефоном с любого устройства tailnet — удобно, когда аппарат лежит на полке в качестве тестового стенда.
Порты, которые участвуют в схеме:
| Что | Порт | Где взять |
|---|---|---|
| SSH в Termux | 8022 | по умолчанию в `sshd` Termux |
| ADB, спаривание | случайный | экран «Сопряжение устройства с кодом» |
| ADB, подключение | случайный | главный экран «Отладка по Wi-Fi» |
| ADB по USB-режиму `tcpip` | 5555 | задаёте сами командой `adb tcpip 5555` |
Как проверить: одной командой посмотрите список устройств и модель:
$ adb devices
List of devices attached
100.101.102.103:40555 device
$ adb shell getprop ro.product.model
SM-A505F
Успех — статус device (не offline и не unauthorized) и вывод модели вашего аппарата. Контрольная проверка «всё вместе»: adb shell uptime возвращает строку с временем работы системы, а параллельная SSH-сессия продолжает отвечать.
На прошивках без «Отладки по Wi-Fi» (Android 10 и старше) схема другая: подключите телефон по USB, выполните adb tcpip 5555, отключите кабель и выполните adb connect 100.101.102.103:5555. Подробности и разбор ошибок — в гайде «Как подключить Android к Windows через ADB: команды, список устройств и ошибки».
Проблема. SSH не подключается сразу после запуска Termux
ssh: connect to host 100.101.102.103 port 8022: Connection refusedsshd не запущен или убит системой после того, как экран погас — Android выгружает фоновые процессы Termux.pgrep -l sshd. Если вывод пустой — termux-wake-lock, затем sshd, снова pgrep -l sshd. В настройках Android: Приложения → Termux → Батарея → «Без ограничений». Проверка: netstat -tlnp | grep 8022 показывает LISTEN, после чего ssh -p 8022 u0_a231@100.101.102.103 проходит.Проблема. Пароль не принимается при входе по SSH
Permission denied (publickey,password).root или под именем аккаунта Google) либо пароль не задан вовсе.whoami — получите, например, u0_a231; задайте пароль командой passwd (появится New password: и Retype password:). Логиньтесь строго так: ssh -p 8022 u0_a231@100.101.102.103. Если пароль забыт — passwd заново.Проблема. ADB не подключается, хотя спаривание прошло
failed to connect to '100.101.102.103:40555': Connection refusedadb connect подставлен порт со экрана сопряжения (он одноразовый) либо «Отладка по Wi-Fi» выключилась после перезагрузки — порт подключения при этом меняется.adb disconnect 100.101.102.103:40555, затем adb connect 100.101.102.103:<новый-порт>. Проверка: adb devices показывает строку со статусом device.Вы получили телефон с постоянным адресом в Tailscale, SSH-доступом в Termux на порту 8022 и беспроводным ADB — всё без root. Дальше логично закрыть доступ ACL-правилами в админке Tailscale (разрешить только свой компьютер) и вынести запуск sshd в Termux:Boot, чтобы связка поднималась сама.
Нужен ли root для Tailscale и SSH на Android?
Нет. Tailscale на Android использует системный VPN-сервис, Termux работает в пользовательском пространстве, а sshd слушает непривилегированный порт 8022. Root не требуется ни на одном шаге.
Почему SSH висит на порту 8022, а не на стандартном 22?
Порты ниже 1024 привилегированные: занять их может только процесс с правами root. Termux работает без root, поэтому sshd по умолчанию слушает 8022 — этот порт и указывается флагом -p при подключении.
Можно ли включить беспроводной ADB на Android 10 и старше?
Раздела «Отладка по Wi-Fi» там нет. Схема обходная: подключить телефон по USB, выполнить adb tcpip 5555, отсоединить кабель и подключиться командой adb connect <адрес-tailscale>:5555. Поведение конкретной прошивки сверьте с её настройками.
Сохранится ли доступ после перезагрузки телефона?
SSH — да, если настроен автозапуск через Termux:Boot и скрипт ~/.termux/boot/start-sshd. ADB — нет: «Отладка по Wi-Fi» после перезагрузки выключается, и спаривание с новым портом нужно проходить заново.