Существуют ли консервированные решения для запуска sshd в initrd?

Это в основном нацелено на Debian / Ubuntu, но я достаточно хорошо разбираюсь в различных дистрибутивах, чтобы иметь возможность адаптировать решение для одного дистрибутива к другому.

Вот мой сценарий. Есть несколько ситуаций, когда процесс загрузки приведет вас к оболочке (обычно busybox) initrd. Особенно важно, когда вы запускаете аппаратный RAID, для которого драйверы должны быть перестроены для каждой новой версии ядра. Я хотел бы иметь доступ к системе спасения так же, как и к полностью загруженной системе.

Я считаю, что можно было бы поставить статические сборки оболочек (s) и sshd (OpenSSH или dropbear) в initrd и искать существующее решение, которое я могу приспособить к моим потребностям.

Предполагая, что нет существующего решения (поскольку я искал довольно долгое время), что мне нужно рассмотреть, помимо использования статических сборников, где это возможно (или поставки libs)? Разумно ли просто кэшировать статическую сборку dropbear и использовать /etc/initramfs-tools/hooks для встраивания, что вместе с «преобразованным» OpenSSH sshd_config и исходными ключами хоста?

Ubuntu 16.04 содержит пакет с именем dropbear-initramfs который должен предоставить эту функцию.

Легкий SSH2 сервер и клиент-initramfs интеграции dropbear является SSH 2 сервером и клиентом, разработанным для того, чтобы быть достаточно маленьким, чтобы использоваться в небольших средах памяти, при этом все еще функционально и достаточно безопасно для общего использования.

Он реализует наиболее необходимые функции протокола SSH 2 и другие функции, такие как X11 и переадресация агента аутентификации.

Этот пакет обеспечивает интеграцию initramfs.

Единственные элементы, которые мне нужно было настроить в дополнение к установке указанного пакета, где:

  1. Раскомментируйте прокомментированный DROPBEAR=y внутри /etc/initramfs-tools/conf-hooks.d/dropbear
  2. Преобразуйте существующие ключи хоста (см. Ниже)
  3. Создайте и заполните /etc/initramfs-tools/root/.ssh/authorized_keys . Для этого я решил привязать привязку /root/.ssh к /etc/initramfs-tools/root/.ssh
  4. Окончательное update-initramfs -u -k all заново создало все изображения initrd

Чтобы преобразовать ключи, я выполнил следующие команды:

 /usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key /usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key /usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_ecdsa_key /etc/initramfs-tools/etc/dropbear/dropbear_ecdsa_host_key 

Примечание. Имена файлов источника и целевого файла различаются. Поэтому не делайте предположений здесь. Кроме того, /usr/lib/dropbear не находится в моем PATH , поэтому мне нужно было дать полный путь для выполнения dropbearconvert .