# Как подключить старый Android-смартфон без root к Tailscale: Termux, SSH и беспроводной ADB

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-podklyuchit-staryy-android-smartfon-bez-root-k-tail.html

## TL;DR

- Время выполнения: 25–30 минут
- Уровень сложности: Intermediate
- Понадобится:
  - 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

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-podklyuchit-staryy-android-smartfon-bez-root-k-tail-ru-1.jpg?v=1792917840)


Tailscale — это оверлейная (mesh) сеть на базе WireGuard: каждое устройство получает постоянный адрес из диапазона `100.64.0.0/10` и доступно остальным участникам своей сети (tailnet) напрямую, без проброса портов. Root для этого не нужен: на Android приложение работает через системный VPN-сервис (`VpnService`), а Termux и `adbd` живут в обычном пользовательском пространстве.

SSH — протокол удалённого доступа к консоли. ADB (Android Debug Bridge) — отладочный мост: через него с компьютера выполняются команды в оболочке телефона, установка APK, скриншоты.

Чек-лист перед стартом:

- [ ] На телефоне включён Wi-Fi, к той же сети подключён компьютер (для первого спаривания ADB)
- [ ] Разрешена установка APK из неизвестных источников — иначе F-Droid не поставится
- [ ] На компьютере выполняется `adb version` (пример вывода: `Android Debug Bridge version 1.0.41`; номер у вас будет свой)
- [ ] На телефоне отключена агрессивная экономия батареи для Termux и Tailscale — иначе Android усыпит процессы и соединение оборвётся
- [ ] В админке Tailscale не заблокировано добавление новых устройств (по умолчанию устройства добавляются свободно)

Если берёте б/у аппарат и хотите понять, сколько он ещё проживёт как рабочий терминал, пригодится гайд [«Как узнать, сколько лет обновлений получит ваш Android-смартфон»](https://ai-release.org/guides/kak-uznat-skolko-let-obnovleniy-poluchit-vash-android-s.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

Если же задача шире — превратить телефон в полноценный Linux-терминал, смотрите [«Как запустить Linux на Android без root: Termux, PRoot и ИИ-инструменты»](https://ai-release.org/guides/kak-zapustit-linux-na-android-bez-root-termux-proot-i-i.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## Шаг 1. Tailscale: постоянный адрес 100.x.y.z для смартфона

**Что сделать:** установите приложение Tailscale, войдите тем же аккаунтом, что и на компьютере, и нажмите подключение. В настройках Android включите для Tailscale «Always-on VPN» (постоянный VPN) — тогда туннель поднимается после перезагрузки.

**Зачем:** вы получаете адрес вида `100.x.y.z`, который не меняется при переходе между Wi-Fi и мобильной сетью. Все дальнейшие команды — SSH и ADB — будут идти на этот адрес, а не на локальный `192.168.x.x`, который меняется после каждого переподключения.

**Как проверить:** на телефоне в приложении статус Connected и адрес `100.x.y.z`. На компьютере:

```bash
$ 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 и файрвол оператора.

## Шаг 2. SSH-сервер в Termux
![Иллюстрация к разделу «Шаг 2. SSH-сервер в Termux»](https://ai-release.org/guides/img/kak-podklyuchit-staryy-android-smartfon-bez-root-k-tail-ru-2.jpg?v=1792917845)


**Что сделать:** обновите пакеты, поставьте `openssh`, задайте пароль пользователя Termux и запустите демон `sshd`.

```bash
pkg update && pkg upgrade -y
pkg install openssh net-tools -y
passwd
whoami
sshd
pgrep -l sshd
netstat -tlnp | grep 8022
```

**Пример вывода:**

```bash
~ $ 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:

```bash
termux-wake-lock
```

В шторке появится уведомление Termux о удержании wakelock — это признак, что система не будет выгружать процесс.

Для автозапуска после перезагрузки (нужно приложение Termux:Boot из F-Droid) создайте скрипт:

```bash
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:

```bash
$ 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` идёт внутри туннеля, поэтому порт не нужно открывать наружу.

## Шаг 3. Беспроводной ADB через Tailscale и финальная проверка
![Иллюстрация к разделу «Шаг 3. Беспроводной ADB через Tailscale и финальная проверка»](https://ai-release.org/guides/img/kak-podklyuchit-staryy-android-smartfon-bez-root-k-tail-ru-3.jpg?v=1792917854)


**Что сделать:** включите отладку и спарьте компьютер с телефоном.

1. Настройки → О телефоне → «Номер сборки» — тапните 7 раз, пока не появится «Вы стали разработчиком».
2. Настройки → Система → Для разработчиков → **Отладка по Wi-Fi** → включить.
3. В том же разделе откройте «Сопряжение устройства с кодом» — на экране появятся адрес с портом и 6-значный код.
4. На компьютере выполните спаривание, подставив порт **с экрана сопряжения**:

```bash
$ 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»** — он отличается от порта сопряжения:

```bash
$ 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` |

**Как проверить:** одной командой посмотрите список устройств и модель:

```bash
$ 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: команды, список устройств и ошибки»](https://ai-release.org/guides/kak-podklyuchit-android-k-windows-cherez-adb-komandy-sp.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## Возможные проблемы и решения

**Проблема. SSH не подключается сразу после запуска Termux**

- Ошибка: `ssh: connect to host 100.101.102.103 port 8022: Connection refused`
- Причина: процесс `sshd` не запущен или убит системой после того, как экран погас — Android выгружает фоновые процессы Termux.
- Решение: откройте 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) либо пароль не задан вовсе.
- Решение: в Termux выполните `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 refused`
- Причина: в `adb connect` подставлен порт со экрана сопряжения (он одноразовый) либо «Отладка по Wi-Fi» выключилась после перезагрузки — порт подключения при этом меняется.
- Решение: откройте «Отладка по 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, чтобы связка поднималась сама.

## FAQ

**Нужен ли 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» после перезагрузки выключается, и спаривание с новым портом нужно проходить заново.
