Сервер SSH (и SFTP) на Android можно обнаружить через avahi/bonjour

Я хотел бы, чтобы мое устройство Android (Samsung Galaxy) можно было обнаружить через avahi/bonjour, когда оно подключено к сети Wi-Fi, а затем иметь доступ к своей файловой системе через SSH (SFTP).

Для меня это привычный и удобный способ доступа к различным устройствам в моей локальной сети: обнаружить их SSH-сервис через avahi/bonjour (чтобы не иметь дело с IP-адресами) и подключиться к ним по ssh. Я бы использовал этот способ для своих систем GNU/Linux (например, Ubuntu).

Существует ли бесплатное (= libre -- потому что я ценю свободу хакерства) программное обеспечение для Android, которое реализовало бы это, а именно:

  • поддержка avahi/bonjour для Android, чтобы Android-устройство было доступно по имени в домене .local (а не только по его IP-адресу);
  • и SSH-сервер с поддержкой публикации через Avahi/bonjour (mdnssd).
Точно такое же пожелание -- android.stackexchange.com/questions/20907/… : ssh к Android не по его IP, а по имени, полученному через zeroconf/bonjour/avahi/mdns (как его ни назови). Было бы еще лучше, если бы сервис SSH был опубликован через zeroconf/bonjour/avahi/mdns/dnssd (как бы вы это ни называли).
Что касается SSH-части пожелания, то уже есть вопросы и ответы: android.stackexchange.com/questions/9905/… , android.stackexchange.com/questions/15503/… . (Хотя мне нужно будет выяснить, являются ли предлагаемые решения бесплатными / свободными программами, чтобы ответить на мой вопрос.) Тем не менее, часть моего вопроса о поддержке avahi / bonjour / zeroconf остается без ответа ...
Я знаю, что это не то же самое, но при поиске «окончательного решения»: я посоветовал своим маршрутизаторам DHCP назначить устройствам статический IP-адрес, а затем настроил его с помощью моего локального DNS (вы также можете сделать это через /etc/hosts). Так что мне нужно запоминать не IP-адреса, а «псевдонимы» устройств, что довольно легко сравнивать.
@Izzy: Понятно, спасибо, это очень разумный обходной путь. Но, к сожалению, в моем случае кажется, что у меня (в качестве маршрутизатора) базовая станция Airport Extreme, которая не поддерживает «резервирование DHCP» . Также было бы неплохо иметь возможность подключаться к устройству по "никнейму" в ситуации, когда я "гость" (в не настроенной мной сети).
Конечно, это было понятно с самого начала - вот почему я думал, что это обходной путь, пока вы не найдете реальное решение. Доступны приложения, позволяющие настроить «фиксированный IP-адрес по запросу / по сети» (в отличие от «фиксированного DHCP»), который должен работать даже с вашей базовой станцией в аэропорту. Если вам интересно, я мог бы подытожить это и поместить в ответ (вместе с моим комментарием выше).
Я наткнулся на некоторый код, где они пытаются использовать реализацию Java mdns и некоторый исходный код от avahi на Android -- code.google.com/p/zeroconf-for-android/source/browse/trunk (это был проект " создать простое андроид-приложение для управления устройствами (электронными устройствами, такими как лампы) через сеть с нулевой конфигурацией ".) Я не уверен, как это работает, и можно ли этот код адаптировать для публикации сервисов SSH...

Ответы (1)

Я использую бесплатный SSHelper (без рута), так как он недавно добавил вещание ZeroConf. Он предоставляет сервер SSH и RSYNC (передача файлов), а также транслирует имя ZeroConf. Другой клиент avahi/bonjour может подключиться без необходимости знать имя хоста Android. Более подробно объяснено в этом другом ответе: Установите имя хоста для SSHelper

Большое спасибо за информацию! Теперь, по крайней мере, я знаю об одной возможности настроить это. Я предпочитаю использовать свободное программное обеспечение (= бесплатное, с открытым исходным кодом). Должен ли я тогда рассмотреть SSHelper?.. (Я пока не знаю, является ли это свободным программным обеспечением.)
@glenschler Привет, я только что попробовал SSHelper, но не понял, как подключиться к ssh, используя имя. Я проверил исходный код и, кажется, использует «SSHelper» в качестве имени zeroconf, но я не могу подключиться к нему следующим образом: ssh SSHelper:2222. Любые подсказки/советы? Спасибо
@ george-profenza Я не знал, что исходный код доступен. Мне нужно провести расследование. Вы должны просмотреть свою сеть на наличие всех имен "avahi". Это будет отличаться от вашей машины Mac или Linux. android.stackexchange.com/questions/42358/…
@glenschler Я использовал avahi на Raspberry Pi, и после его установки я мог получить доступ к своему pi как rpi.local. В Windows мне пришлось установить службу bonjour. Я пытался получить доступ к ssh/http, используя имя хоста SSHelper (которое я мог видеть в списке на работающем Mac dns-sd -B), но я не смог к нему подключиться. Как вы подключаетесь к своему телефону по имени (какое имя вы используете) с помощью SSHelper?
Вышла новая версия 5.5 SSHelper. Да, чтобы ответить на предыдущий вопрос, это бесплатное программное обеспечение. Теперь вы можете настроить собственное имя! Мои инструкции подробно описаны здесь android.stackexchange.com/questions/42358/…
Из-за изменений в API он больше не работает в Android 11 и более поздних версиях.