Чем заменить OpenSSH на слабых устройствах и роутерах

25 июл 2026
2,372
470
67
1 месяц

Когда вы собираете минималистичный образ для микроконтроллера, роутера или Docker-контейнера, каждый мегабайт памяти превращается в роскошь. Полноценный OpenSSH отлично работает на серверах, но для встраиваемых систем он выглядит как грузовик, приехавший за покупками в продуктовый павильон. За ним тянется хвост из зависимостей, а оперативная память тает буквально на глазах.

В таких ситуациях вспоминают про Dropbear. Это компактный SSH-сервер и клиент, написанный Мэттом Джонстоном. Проект появился более двадцати лет назад, но до сих пор активно поддерживается и служит стандартом по умолчанию в OpenWrt и прошивках для сетевого оборудования.

Что внутри и за счет чего достигается экономия

Dropbear решает одну конкретную задачу: экономно расходовать место на диске и в оперативке, сохраняя при этом базовую безопасность протокола SSH-2. Если откомпилировать проект с нужными флагами, итоговый бинарник займет всего пару сотен килобайт.

Разработчик применил концепцию единого исполняемого файла (multi-purpose binary), аналогично тому, как устроена утилита BusyBox. В этом режиме один файл отвечает за функции сервера, клиента dbclient, генератора ключей dropbearkey и конвертера dropbearconvert. Вы создаете символические ссылки с нужными именами на один бинарник, а программа определяет режим работы по имени вызванного файла.

Вот еще пара приемов для снижения объема:

Реклама
  • Встроенный клиент scp по умолчанию собирается без полосы прогресса передачи файлов. Если вам нужен индикатор, придется явно передать параметр SCPPROGRESS=1 при сборке.
  • В файле options.h можно вручную отключить неиспользуемые алгоритмы шифрования, проброс портов или поддержку авторизации по паролю, еще сильнее урезав размер итогового файла.

Нюансы работы с ключами

Если вы привыкли к стандартному инструментарию OpenSSH, проект преподнесет несколько сюрпризов. На стороне сервера все привычно: файл ~/.ssh/authorized_keys работает стандартным образом. Вы добавляете туда публичные ключи формата ssh-rsa или ssh-ed25519. Главное, чтобы редактор не разбил строку ключа на несколько частей, а права на папку .ssh разрешали запись только владельцу.

Со стороны клиента и при генерации ключей хоста начинаются особенности. Утилита использует собственный формат приватных ключей. Чтобы применить привычный ключ ~/.ssh/id_rsa в клиенте dbclient, его придется предварительно конвертировать:

dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db user@remotehost

Если вы создаете новый ключ через родную утилиту dropbearkey, приватная и публичная части выводятся прямо в консоль. Вытащить публичный ключ для добавления на другой сервер можно обычной фильтрацией:

./dropbearkey -y -f ~/.ssh/id_ed25519 | grep "^ssh-" > ~/.ssh/id_ed25519.pub

Запуск сервера и подводные камни

Обычно перед запуском SSH-сервера требуется вручную сгенерировать ключи хоста:

./dropbearkey -t rsa -f dropbear_rsa_host_key
./dropbearkey -t ed25519 -f dropbear_ed25519_host_key

В Dropbear есть удобный хак для быстрой загрузки систем. Вместо генерации ключей во время старта (что замедляет запуск на слабых процессорах), серверу передают флаг -R. В этом случае ключи автоматически создадутся в каталоге /etc/dropbear/ только при первом входящем подключении.

При эксплуатации стоит учитывать особенности проекта:

  • Запуск сервера от обычного пользователя сильно ограничен. Не получится выделить псевдотерминал (pty), зайти под другим аккаунтом или использовать shadow-пароли.
  • Зашифрованные паролем хостовые ключи не поддерживаются напрямую, хотя клиент умеет подключаться к запущенному ssh-agent.
  • Подробной документации у проекта нет. Основные инструкции разбросаны по текстовым файлам INSTALL.md, MULTI.md и SMALL.md в корне репозитория.

Кому пригодится этот инструмент

Dropbear выручит, если вы делаете собственную прошивку для роутера, разрабатываете устройство на базе Linux с ограниченным объемом flash-памяти или собираете компактный образ для initramfs. На полноценном сервере с десятками гигабайт памяти вы вряд ли заметите разницу с OpenSSH. Но там, где счет идет на килобайты, этот инструмент экономит ресурсы лучше большинства аналогов.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.