Подключение по SSH к Android-устройству: полное руководство

Ошибка Connection refused при попытке подключиться к телефону по SSH почти всегда означает одно: на Android просто не запущен SSH-сервер — в системе нет встроенного демона sshd, и его нужно поднять вручную через стороннее приложение. Пока сервер не стартован и не слушает порт, никакой клиент — ни с ПК, ни с другого телефона — не сможет установить соединение.

В этой статье разберём, как организовать SSH-подключение к Android в обе стороны: когда смартфон выступает сервером (вы заходите на него с компьютера) и когда он клиентом (вы подключаетесь с телефона к удалённой машине). Также рассмотрим настройку авторизации по ключам, типичные ошибки и ограничения, связанные с отсутствием root-прав.

Зачем нужен SSH на Android и как это работает

SSH (Secure Shell) — зашифрованный сетевой протокол для удалённого управления. В контексте Android он решает несколько практических задач: передача файлов между телефоном и ПК без кабеля, запуск команд в терминале устройства, доступ к файловой системе через SFTP-клиенты вроде FileZilla или WinSCP.

Принципиальная схема проста: на одном устройстве работает SSH-сервер, который слушает определённый TCP-порт, а на другом — SSH-клиент, инициирующий соединение. Оба устройства должны быть доступны друг другу по сети — обычно это одна Wi-Fi-сеть, но возможно и подключение через интернет при наличии внешнего IP или проброса портов.

Важный нюанс: без root-прав Android-приложения не могут занимать привилегированные порты ниже 1024, поэтому стандартный порт 22 недоступен. Серверы на Android обычно используют порт 8022 — это де-факто стандарт для Termux и ряда других приложений.

Подготовка: что понадобится

Перед настройкой убедитесь, что выполнены базовые условия. Их проверка займёт пару минут, но избавит от большинства проблем на этапе подключения.

  • 📶 Оба устройства подключены к одной Wi-Fi-сети (либо настроена маршрутизация между сетями).
  • 📱 На Android установлено приложение с SSH-сервером — чаще всего используют Termux.
  • 🔍 Известен локальный IP-адрес телефона — его можно посмотреть в настройках Wi-Fi или командой ifconfig.
  • 🔥 Файрвол или изоляция клиентов в роутере не блокирует соединения между устройствами.
⚠️ Внимание: функция «изоляция клиентов» (AP isolation) на роутере запрещает устройствам в одной Wi-Fi-сети видеть друг друга. Если пинг до телефона не проходит при корректном IP — проверьте этот параметр в настройках маршрутизатора.

Установка и запуск SSH-сервера через Termux

Наиболее предсказуемый способ поднять SSH-сервер на Android — окружение Termux. Это терминальный эмулятор с полноценным пакетным менеджером, в котором доступен пакет OpenSSH. Устанавливайте Termux из F-Droid: версия в Google Play давно не обновлялась и может работать некорректно на современных версиях Android.

После установки откройте Termux и выполните обновление пакетов и установку сервера:

pkg update && pkg upgrade

pkg install openssh

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

sshd

Команда не выводит ничего при успешном старте — это нормально. Проверить, что сервер работает, можно командой pgrep sshd: если она вернула номер процесса, демон запущен и слушает порт 8022.

☑️ Запуск SSH-сервера на Android

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

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

С ПК подключение выполняется любым SSH-клиентом: в Windows 10 и новее клиент OpenSSH встроен в систему, в Linux и macOS он также присутствует по умолчанию. Синтаксис команды стандартный, с явным указанием порта:

ssh -p 8022 192.168.1.50

Здесь 192.168.1.50 — пример локального адреса телефона; подставьте свой. При первом подключении клиент попросит подтвердить отпечаток ключа сервера — ответьте yes, после чего введите пароль, заданный через passwd в Termux.

Для передачи файлов удобнее протокол SFTP. В WinSCP или FileZilla создайте новое подключение, укажите протокол SFTP, адрес телефона, порт 8022 и учётные данные. Так вы получите доступ к домашней директории Termux, а после выполнения termux-setup-storage — и к общему хранилищу устройства.

📊 Для чего вы используете SSH на Android
Передача файлов с ПК
Удалённый терминал и команды
Подключение к серверам с телефона
Только изучаю возможность

Настройка авторизации по ключам

Парольный вход работает, но ключи безопаснее и удобнее: не нужно вводить пароль при каждом подключении, а сам пароль можно вообще отключить. Схема стандартная для OpenSSH: на клиентской машине генерируется пара ключей, публичный ключ добавляется на сервер.

На ПК выполните генерацию ключа:

ssh-keygen -t ed25519

Затем скопируйте содержимое публичного ключа (файл ~/.ssh/id_ed25519.pub) в файл ~/.ssh/authorized_keys внутри Termux. Проще всего сделать это, подключившись один раз по паролю и вставив ключ вручную через редактор, либо передать файл через SFTP и выполнить в Termux команду cat файл >> ~/.ssh/authorized_keys.

⚠️ Внимание: права на каталог ~/.ssh и файл authorized_keys должны быть ограничены (700 и 600 соответственно). Иначе OpenSSH может проигнорировать ключ — это частая причина ситуации, когда ключ добавлен, но сервер всё равно просит пароль.

Подключение с Android к удалённому серверу

Обратная задача — использовать телефон как SSH-клиент — решается ещё проще. В том же Termux достаточно выполнить ssh user@host, как на обычном Linux. Если терминал не нужен, существуют графические SSH-клиенты для Android, например JuiceSSH или ConnectBot: они позволяют сохранять профили подключений, хранить ключи и работать с несколькими сессиями.

При подключении к серверу в интернете используйте стандартный порт 22 (если он не изменён администратором) и обязательно проверяйте отпечаток ключа сервера при первом соединении. Это защита от подмены сервера посредником.

Как сделать, чтобы SSH-сервер запускался автоматически

В Termux можно добавить команду sshd в файл ~/.bashrc или использовать дополнение Termux:Boot, которое выполняет скрипты из каталога ~/.termux/boot/ при включении устройства. Учтите, что Android может выгружать фоновые процессы — для стабильной работы отключите оптимизацию батареи для Termux в настройках системы.

Типичные ошибки и их решение

Большинство проблем при SSH-подключении к Android сводится к нескольким повторяющимся сценариям. Ниже — диагностическая таблица.

ОшибкаВероятная причинаЧто проверить
Connection refusedСервер не запущен или неверный портВыполнить sshd, проверить порт 8022
Connection timed outНедоступность по сети, изоляция клиентовПинг до IP телефона, настройки роутера
Permission deniedНеверный пароль или отклонён ключПароль через passwd, права на authorized_keys
Соединение обрываетсяAndroid выгрузил Termux из памятиОтключить оптимизацию батареи для приложения

Отдельно стоит упомянуть агрессивное управление фоновыми процессами на прошивках некоторых производителей. Система может «убивать» Termux через несколько минут после выключения экрана. Помогает закрепление приложения в recent-списке, отключение всех ограничений фоновой активности и, в некоторых оболочках, добавление приложения в список исключений «экономии энергии». Конкретные названия пунктов меню различаются между прошивками — сверяйтесь с документацией своего устройства.

Безопасность SSH на Android

Открытый SSH-сервер на телефоне — это потенциальная точка входа, поэтому минимальные меры защиты обязательны. Держите сервер выключенным, когда он не нужен: команда pkill sshd останавливает демон одним действием.

  • 🔑 Предпочитайте авторизацию по ключам и отключайте парольный вход после настройки ключей.
  • 🌐 Не пробрасывайте порт SSH наружу через роутер без крайней необходимости; для доступа извне безопаснее VPN.
  • 🔄 Регулярно обновляйте пакеты Termux — pkg upgrade закрывает известные уязвимости OpenSSH.
  • 📵 Не запускайте SSH-сервер в открытых публичных Wi-Fi-сетях.

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

Нужен ли root для SSH-сервера на Android?

Нет. Termux и аналогичные приложения работают без root-прав. Ограничение одно: без рута нельзя использовать порт 22, поэтому сервер слушает порт 8022, который нужно указывать явно при подключении.

Почему после перезагрузки телефона SSH не работает?

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

Можно ли подключиться по SSH через мобильный интернет?

Напрямую — обычно нет: операторы выдают «серые» адреса за NAT, входящие соединения недоступны. Рабочие варианты — VPN между устройствами, сервисы типа Tailscale или подключение через промежуточный сервер с внешним IP.

Как передать файлы по SSH с ПК на телефон?

Используйте SFTP-клиент (WinSCP, FileZilla) с портом 8022 либо команду scp -P 8022 файл user@ip:. Обратите внимание: у scp порт задаётся заглавной буквой -P, у ssh — строчной -p.

Termux просит пароль, хотя ключ добавлен. Что не так?

Чаще всего дело в правах: выполните chmod 700 ~/.ssh и chmod 600 ~/.ssh/authorized_keys. Также проверьте, что ключ вставлен одной строкой без лишних переносов.