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

Nate Adams

Участники форума
  • Постов

    2
  • Зарегистрирован

  • Посещение

Оборудование

  • Устройства
    Keenetic Ultra II

Достижения Nate Adams

Новичок

Новичок (1/6)

0

Репутация

  1. В общем, много разных советов читал, но нормальной инструкции так и не нашёл, так что вот вам моя версия с успешным подключением по ключу. Подключение через порт DropBear (предустановленный пакет Entware) - не путайте с параметрами SSH, настраиваемыми на самом роутере. При подключении напрямую к DropBear вы попадаете в Entware минуя cli роутера (не нужно будет писать `exec sh`). Может потребоваться настраивать разрешение в фаерволе самого роутера (через веб-морду). Настройки для ROOT (пароль должен быть задан при первоначальной настройке Entware)! Для Windows-пользователей расположение config-файла SSH и ключи по умолчанию в папке пользователя: C:\Users\<USERNAME>\.ssh ( %userprofile%\.ssh ) Настройка входа по SSH-ключу в Entware Dropbear на Keenetic 1. Создать SSH-ключ на компьютере Если ключа ещё нет: ssh-keygen -t ed25519 По умолчанию будут созданы: ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub id_ed25519 — приватный ключ, его никому не передавать; id_ed25519.pub — публичный ключ, его нужно добавить на роутер. 2. Определить домашний каталог root в Entware Подключиться к Entware Dropbear по паролю и выполнить: echo "$HOME" grep '^root:' /opt/etc/passwd /etc/passwd 2>/dev/null Обычно для Entware: HOME=/opt/root 3. Создать каталог для ключей На роутере: mkdir -p /opt/root/.ssh chmod 700 /opt/root/.ssh Добавить содержимое публичного ключа в файл: nano /opt/root/.ssh/authorized_keys Вставить одну строку вида: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... user@computer После сохранения: chmod 600 /opt/root/.ssh/authorized_keys chown -R root:root /opt/root/.ssh Проверить: ls -ld /opt/root /opt/root/.ssh ls -l /opt/root/.ssh/authorized_keys Нормальные права: drwxr-xr-x /opt/root drwx------ /opt/root/.ssh -rw------- /opt/root/.ssh/authorized_keys 4. Проверить вход с явным указанием ключа На компьютере: ssh -i ~/.ssh/id_ed25519 -p 222 root@ROUTER_IP Для проверки без перехода к паролю: ssh -o BatchMode=yes -i ~/.ssh/id_ed25519 -p 222 root@ROUTER_IP Если вход прошёл — настройка готова. 5. Если Dropbear всё равно требует пароль Запустить временный Dropbear на другом порту, явно указав каталог с authorized_keys: /opt/sbin/dropbear \ -F \ -E \ -p 223 \ -P /tmp/dropbear-test.pid \ -D /opt/root/.ssh Из другого окна проверить: ssh -o BatchMode=yes -i ~/.ssh/id_ed25519 -p 223 root@ROUTER_IP Если с параметром -D ключ заработал, значит установленный Dropbear по умолчанию ищет authorized_keys не в домашнем каталоге пользователя. 6. Постоянно указать каталог authorized_keys Открыть конфигурацию: nano /opt/etc/config/dropbear.conf Добавить: AUTHORIZED_KEYS_DIR="/opt/root/.ssh" Пример полного файла: PORT=222 PIDFILE="/opt/var/run/dropbear.pid" AUTHORIZED_KEYS_DIR="/opt/root/.ssh" Открыть init-скрипт: nano /opt/etc/init.d/S51dropbear Найти функцию запуска: start() { $DROPBEAR -p $PORT -P $PIDFILE } Заменить на: start() { $DROPBEAR -p "$PORT" -P "$PIDFILE" -D "$AUTHORIZED_KEYS_DIR" } Перезапустить Dropbear: /opt/etc/init.d/S51dropbear restart Текущую SSH-сессию до проверки лучше не закрывать. Проверить из нового окна: ssh -o BatchMode=yes -i ~/.ssh/id_ed25519 -p 222 root@ROUTER_IP 7. Проверить параметры запущенного процесса На роутере: ps w | grep '[d]ropbear' У Entware Dropbear должна быть строка примерно такого вида: /opt/sbin/dropbear -p 222 -P /opt/var/run/dropbear.pid -D /opt/root/.ssh Также можно проверить слушающий порт: netstat -lntp | grep ':222' 8. Удобная запись в SSH config На компьютере можно добавить: Host my-router HostName 192.168.1.1 User root Port 222 IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes После этого подключение выполняется одной командой: ssh my-router "my-router" можно заменить на любое удобное для вас название. HostName - указываете IP роутера (внутренний, если работаете в сети роутера / внешний, если подключаетесь извне и открыт доступ на фаерволе роутера) Диагностика Для подробного вывода клиента: ssh -vvv -i ~/.ssh/id_ed25519 -p 222 root@ROUTER_IP В исправном случае должны появиться строки: Offering public key Server accepts key Authenticated ... using "publickey" Если есть: Offering public key но нет: Server accepts key значит клиент ключ нашёл, но Dropbear его отвергает. Нужно проверять: путь к authorized_keys; параметр -D; права каталогов и файла; соответствие публичного ключа приватному; пользователя, под которым выполняется вход. Поиск файлов вида `id_ed25519-cert` и `id_ed25519-cert.pub` в отладочном выводе OpenSSH является нормальным. Клиент автоматически проверяет наличие SSH-сертификата рядом с обычным ключом; отсутствие этих файлов не мешает авторизации обычным ключом.
  2. Если без извращений с OPKG будет возможность прямо средствами системы роутера подключать по WebDAV облачное хранилище как сетевую папку - будет просто восхитительно. К тому же, да, можно на usb 3.0 файл подкачки любых размеров запилить.
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.