Человекоподобный робот: копаемся в мозгах
Вспомнил, зачем мне понадобился рутовый доступ к Android: оказывается, я хотел включить на нём демона sshd интереса ради и, вероятно, для опытов. Поуправлять, так сказать, своим телефоном дистанционно и\или без помощи рук. Поскольку у меня CyanogenMod 10.1, искомый демон там есть по умолчанию, осталось его только настроить.
Инструкцию взял с этой страницы, а также модифицированной версии и несколько адаптировал:
Инструкцию взял с этой страницы, а также модифицированной версии и несколько адаптировал:
- Подключаемся к телефону с помощью adb и переключаемся в рута:
adb shellshell@android:/ $ sushell@android:/ #
- Редактируем конфигурацию sshd
shell@android:/ # vi /data/ssh/sshd_config
- Вставляем туда нужный текст
# Minimal OpenSSH daemon configuration for CyanogenMod 10.1+
AuthorizedKeysFile /data/ssh/authorized_keys
ChallengeResponseAuthentication no
PasswordAuthentication no
PermitRootLogin without-password
Subsystem sftp internal-sftp
pidfile /data/ssh/sshd.pid
- Создаём, если ещё не существует файл доверенных ключей:
shell@android:/ # touch /data/ssh/authorized_keys
- ssh сервер на Android должен иметь свои ключи для работы. Создим их:
shell@android:/ # ssh-keygen -A
- Устанавливаем правильные права на файлы конфигурации:
shell@android:/ # chmod 600 /data/ssh/authorized_keysshell@android:/ # chmod 644 /data/ssh/sshd_config
- Копируем с локального компьютера публичный ключ ~/.ssh/id_rsa.pub на телефон, чтобы сервер мог ему доверять при подключении:
shell@android:/ # vi /data/ssh/authorized_keys
- Посмотреть ip-адрес телефона:
shell@android:/ # ifconfig wlan0
wlan0: ip 10.236.32.30 mask 255.255.254.0 flags [up broadcast running multicast]
- Запустить sshd на Android:
shell@android:/ #/system/bin/sshd -d
- Проверяем работоспособность подключения по ssh к телефону:
localhost$ ssh root@10.236.32.30
lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory
lastlog_openseek: Couldn't stat /var/log/lastlog: No such file or directory
debug1: permanently_set_uid: 0/0
Environment:
USER=root
LOGNAME=root
HOME=/
PATH=/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
MAIL=/var/mail/root
SHELL=/system/bin/sh
SSH_CLIENT=10.236.32.76 57753 22
SSH_CONNECTION=10.236.32.76 57753 10.236.32.30 22
SSH_TTY=/dev/ptmx
TERM=xterm-256color
- Для настройки автоматического запуска демона при старте системы создадим запускающий скрипт:
shell@android:/ # vi /data/ssh/sshd_start.sh
- Добавляем туда содержание:
#!/system/bin/sh
umask 077
# DEBUG=1
#
# Generate rsa1, rsa, dsa and ecdsa host keys, if not already existing
ssh-keygen -A
if [ "1" == "$DEBUG" ] ; then
# run sshd in debug mode and capture output to logcat
/system/bin/logwrapper /system/bin/sshd -D -d
else
# don't daemonize - otherwise we can't stop the sshd service
/system/bin/sshd -D
fi
- Завершаем настройку:
shell@android:/ # chmod 755 /data/ssh/sshd_start.shЕсли к телефону нужно подключаться более чем с одного компьютера,- необходимо с каждого из них скопировать публичные ключи на телефон в файл /data/ssh/authorized_keys с помощью vi, например.
shell@android:/ # mkdir -p /data/local/userinit.d
shell@android:/ # ln -s /data/ssh/sshd_start.sh /data/local/userinit.d/90sshd
Комментарии
Отправить комментарий