Перейти к содержанию

Шаг 2. SSH и отключение обновлений

Делается сразу после шага 1, пока работает ADB. Результат:

  • обновления от Яндекса больше не ставятся — root не пропадёт;
  • SSH на порту 2222 поднимается при каждой загрузке (ADB остаётся запасным входом).

Все команды — с компьютера, из клона репозитория (Marker284/yandex-station-extended).

1. Отключите обновления

adb push contrib/yandex-noupdate.sh /data/opt/yandex-noupdate.sh
adb shell sh /data/opt/yandex-noupdate.sh
adb shell reboot

Проверка после перезагрузки:

adb shell sh /data/opt/yandex-noupdate.sh status
launch.json : updatesd убран
applier     : заглушён
ota key     : подменён

Вернуть всё как было: sh /data/opt/yandex-noupdate.sh restore (оригиналы лежат в /data/opt/backup).

Что делает скрипт

Все правки — в /system/vendor/quasar/ (rootfs временно перемонтируется в rw):

  1. ota_script.pub заменяется чужим ключом — любой OTA-пакет не проходит проверку подписи. Это главная защита.
  2. device_ota_update.sh заменяется заглушкой.
  3. Из launch.json убирается демон maind --updatesd (с проверкой результата: если правка не удалась, файл остаётся исходным, а защита держится на пунктах 1–2).

2. Поставьте SSH (Dropbear)

Статический dropbear (32-битный ARM, armhf) лежит в репозитории, в contrib/bin/.

adb shell mkdir -p /data/opt/bin /data/opt/etc/dropbear
adb push contrib/bin/dropbear contrib/bin/dropbearkey /data/opt/bin/
adb shell chmod +x /data/opt/bin/dropbear /data/opt/bin/dropbearkey
adb shell /data/opt/bin/dropbearkey -t ed25519 -f /data/opt/etc/dropbear/hk_ed25519

Автозапуск — скрипт /etc/init.d/S99zdropbear (стартует после S99quasar, когда ADB уже поднят как запасной вход):

adb shell
mount -o remount,rw /
cat > /etc/init.d/S99zdropbear <<'EOF'
#!/bin/sh
# Autostart dropbear SSH on :2222 (delete this file to remove).
DB=/data/opt/bin/dropbear
DIR=/data/opt/etc/dropbear
HK=$DIR/hk_ed25519
LOG=$DIR/dropbear.log
start() {
  [ -x "$DB" ] || { echo "$(date) no $DB" >> "$LOG"; return 1; }
  # host key lost (e.g. /data wiped) -> make a new one
  [ -s "$HK" ] || /data/opt/bin/dropbearkey -t ed25519 -f "$HK" >> "$LOG" 2>&1 || return 1
  pidof dropbear >/dev/null 2>&1 && return 0
  # -B: root has an empty password, without it dropbear refuses the login.
  # This build has no syslog: its messages go to stderr, i.e. to $LOG (no -E flag here).
  "$DB" -r "$HK" -p 2222 -B 2>>"$LOG"
}
case "$1" in
  start)   start ;;
  stop)    killall dropbear 2>/dev/null ;;
  restart) killall dropbear 2>/dev/null; sleep 1; start ;;
esac
exit 0
EOF
chmod +x /etc/init.d/S99zdropbear
sync; mount -o remount,ro /
/etc/init.d/S99zdropbear start

Подключение (пароль пустой — просто Enter):

ssh -p 2222 root@192.168.1.120

Если не пускает — смотрите лог /data/opt/etc/dropbear/dropbear.log (через adb shell) и перезапустите сервер: /etc/init.d/S99zdropbear restart.

Флага -E у этой сборки нет

dropbear из contrib/bin собран без syslog и всегда пишет сообщения в stderr — поэтому они и так попадают в dropbear.log. Флаг -E («писать в stderr вместо syslog») в такой сборке не существует, и с ним сервер не запускается. Не путайте с -e — это другая опция (передать окружение сервера в сессию), для запуска она не нужна.

Ставили автозапуск раньше и SSH не поднимается

В ранних версиях этой страницы Dropbear запускался с -E и без -B. Исправьте строку запуска в уже установленном скрипте — через adb shell (перезапуск по SSH оборвёт сам сеанс):

mount -o remount,rw /
sed -i 's/ -E 2>>/ 2>>/; s/-p 2222 2>>/-p 2222 -B 2>>/' /etc/init.d/S99zdropbear
grep -- '-p 2222' /etc/init.d/S99zdropbear      # должно быть: -p 2222 -B 2>>"$LOG"
sync; mount -o remount,ro /
/etc/init.d/S99zdropbear stop; /etc/init.d/S99zdropbear start

Пароля у root нет

Поэтому Dropbear запускается с -B (разрешить пустой пароль): без него вход отклоняется. Войти может любой в вашей локальной сети. Не открывайте порты 2222 и 5555 наружу и не держите колонку в недоверенной сети.

3. Верните DNS

Теперь можно убрать 179.254.167.126 с роутера (шаг 7).

Дальше: шаг 3 — пакеты yse.


Как это устроено

  • Корневая ФС / — ubifs, смонтирована только для чтения, но dm-verity на ней не включён: после mount -o remount,rw / правки сохраняются и переживают перезагрузку.
  • /data — ссылка на /bkupgrade/data (отдельный раздел, ~87 МБ). Свой софт кладите в /data/opt.
  • Скрипты /etc/init.d/S??* выполняет rcS по алфавиту при загрузке — так работают S99zdropbear и другие автозапуски из этой вики.
  • Сброс к заводским настройкам кнопками очищает /data — после него шаги 1–2 придётся повторить.