Однако, не все так просто, необходимо поднять dropbear (облегченный sshd) на зверьке - и тогда наступит счастье. Проблема в том, что в андроиде нет стандартного /etc/passwd - поэтому коннектится можно только по ключу.
Итак, нам понадобится рабочий adb shell (как ставить, где брать - гугл в помощь, начать можно здесь). У меня стоит прошивка CyanogenMod, в котором дропбир уже есть. У кого нет - можно собрать из сорцов (ссылка на сбор есть в этом руководстве).
- Создадим директории
# adb shell "install -o 0 -g 0 -m 700 -D -d /data/dropbear/.ssh"
- Сгенерим ключи для сервера
# adb shell "dropbearkey -t rsa -f /data/dropbear/dropbear_rsa_host_key"
# adb shell "dropbearkey -t dss -f /data/dropbear/dropbear_dss_host_key"
- Протестируем на запуск - дропбир запустится в интерактивном режиме, не подавшись в демоны (ключ -F) на порту 2222. Должно быть без ошибок, выход по Ctrl-C
# adb shell "dropbear -r /data/dropbear/dropbear_rsa_host_key -p 2222 -F -E -v -s"
- Теперь надо сгенерить ключи для клиента. Ключ можно сгенерить на стороне клиента или сервера. Проще на стороне клиента, с помощью PuTTYgen - the PuTTY key generator из стандартной поставки PuTTY (например, как описано здесь, здесь или здесь).
Сгенерированный публичный ключ (строчка, которая начинается на ssh-) скопировать в консоль adb в такую команду:
# adb shell "echo 'ssh-rsa ваш_публичный_ключ' > /data/dropbear/.ssh/authorized_keys"
- И исправим права на файл
# adb shell "chmod 600 /data/dropbear/.ssh/authorized_keys"
# adb shell "chown root.root /data/dropbear/.ssh/authorized_keys"
Можно и на стороне сервера сделать ключи, но есть нюанс =)
# adb shell "dropbearkey -t rsa -f /data/dropbear/client_rsa_key.private"В итоге получается два файла с приватным ключом клиента (client_rsa_key.private) и публичным ключем для сервера (client_rsa_key.public). Второй положим серверу куда ему надо:
# adb shell "dropbearkey -f /data/dropbear/client_rsa_key.private -y > /data/dropbear/client_rsa_key.public"
# adb shell "grep ssh- /data/dropbear/client_rsa_key.public > /data/dropbear/.ssh/authorized_keys"...а первый сконвертим (если у вас есть dropbearconver, конечно):
# adb shell "dropbearconvert openssh /data/dropbear/client_rsa_key.private /data/dropbear/client_rsa_key.private-ssh"и заберем себе (это уже на хосте, не в adb)
$ adb pull /data/dropbear/client_rsa_key.private-ssh ./Все, ваш дропбир готов к запуску. Дальше возможны варианты использования.
Можно запустить доступ только через adb (бОльшая безопасность, но меньшая гибкость):
- В консоли adb, запустим дропбир:
# adb shell /system/xbin/dropbear -s -E -p 127.0.0.1:2222
- И, затем, на хосте, пробросим порт до него:
# adb forward tcp:2222 tcp:2222
- После этого можно коннектится в PuTTY к 127.0.0.1:2222 (не забыв при этом подключить сгенерированный выше приватный ключ!)
- По окончанию работы, надо убить демона, штобы злобные хацкеры не проникли в ваш телефон:
# adb shell killall -9 dropbearМожно запустить доступ на всю сеть - что, возможно, удобнее, но менее безопасно.
# adb shell /system/xbin/dropbear -s -E -p 2222Не забыв при этом убить демона по окончанию работы - тоже для целей безопасности и порядку.
Кстати, есть и третий вариант использования - можно демона dropbear не убивать и вообще поставить в автозапуск, настрить DynDns и коннектиться к зверьку из любой точки земного шара (непонятно только, зачем =).
Подготовлено по материалам ссылок по тексту, а так же 1, 2, 3.
P.S. Нашел простенькую статью о реверсе баз на андроиде. На память оставлю здесь )