Ошибка 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
Подключение к 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 — и к общему хранилищу устройства.
Настройка авторизации по ключам
Парольный вход работает, но ключи безопаснее и удобнее: не нужно вводить пароль при каждом подключении, а сам пароль можно вообще отключить. Схема стандартная для 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. Также проверьте, что ключ вставлен одной строкой без лишних переносов.