Вопрос или проблема
Хотя я обычно использую OpenSSH, у меня установлена Dropbear на системе Debian, чтобы предоставить небольшой SSH-сервер для разблокировки шифрования диска во время фазы загрузки initramfs.
Dropbear и OpenSSH используют разные форматы файлов ключей. Я также не хочу, чтобы они использовали одну пару ключей и не хочу преобразовывать пару ключей Dropbear в OpenSSH.
Как просто отобразить публичный ключ Dropbear в формате OpenSSH и/или его отпечаток?
Dropbear использует бинарный формат для хранения ключа и не имеет второго файла для хранения публичного ключа, особенно в читаемой для человека форме.
Программа dropbearkey
отвечает за генерацию ключей, но также может отображать публичный ключ для двоичного файла ключа. Переключатель -y
важен для чтения файла, а не для записи его!
$ sudo dropbearkey -y -f /etc/dropbear/dropbear_ecdsa_host_key
Public key portion is:
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAFygHJYm8rXlIrktbgGEcrfkipydP7ZM+mkWwot7lhnrYYuKvwMNE99YyvrKYT8fXnVaemSgOsigJDGAgdfCyJNjgDdNE4AU4RQRY4IN4PinnlMsw2Lv1BY1q+F2IcBBoSb/2OVTc2c5/LRQ7/rbPcqBpU8V3v67CTTULYY7yH1BTfnXQ== root@hostname
Fingerprint: md5 7d:c5:7e:43:a2:07:c3:93:a7:fe:5c:76:60:2e:a0:4c
Я всегда использовал это для отображения публичного ключа:
dropbearkey -y -f /etc/dropbear/dropbear_ecdsa_host_key|sed -n 2p
Это выводит только часть публичного ключа без всякой другой ненужной информации. Я использую следующее, чтобы сгенерировать файл публичного ключа.
dbk=/etc/dropbear/dropbear_ecdsa_host_key;dropbearkey -y -f $dbk|sed -n 2p>${dbk}.pub;chmod 600 ${dbk}.pub
Это также работает с ключами rsa для dropbear.
Ответ или решение
Обеспечение безопасного доступа к системе с помощью SSH является одним из ключевых аспектов настройки серверов. В данной ситуации вы работаете с Dropbear SSH сервером, установленным на системе Debian, который используется для разблокировки шифрования дисков на этапе загрузки initramfs. В отличие от OpenSSH, который, возможно, более привычен и широко распространен, Dropbear предоставляет более легкое и компактное решение для SSH, что делает его идеальным для систем с ограниченными ресурсами.
Теория
Несмотря на то, что Dropbear и OpenSSH оба реализуют SSH протокол, форматы их ключевых файлов отличаются. Dropbear хранит ключи в бинарном формате и не создает отдельного файла для публичного ключа в человекочитаемом виде, что может создать некоторое неудобство тем, кто привык к OpenSSH. Это также означает, что вы не можете использовать общие ключевые пары между этими двумя системами без преобразования, чего вы, как было указано, не хотите делать.
Тем не менее, для многих задач вам может понадобиться ознакомиться с публичным ключом или его отпечатком в формате, видом пригодном для использования с OpenSSH или другими приложениями.
Пример
Для управления ключами в Dropbear используется утилита dropbearkey
, которая позволяет не только генерировать ключи, но и просматривать публичные ключи, извлекая их из бинарных файлов. Для этой задачи ключевым является параметр -y
, который предназначен для чтения файлов. Пример команды, используемой для отображения публичного ключа и его отпечатка, выглядит следующим образом:
sudo dropbearkey -y -f /etc/dropbear/dropbear_ecdsa_host_key
При выполнении этой команды вы получите вывод, содержащий как публичный ключ в формате OpenSSH
, так и его отпечаток. Например:
Public key portion is:
ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAFygHJYm8rXlIrktbgGEcrfkipydP7ZM+mkWwot7lhnrYYuKvwMNE99YyvrKYT8fXnVaemSgOsigJDGAgdfCyJNjgDdNE4AU4RQRY4IN4PinnlMsw2Lv1BY1q+F2IcBBoSb/2OVTc2c5/LRQ7/rbPcqBpU8V3v67CTTULYY7yH1BTfnXQ== root@hostname
Fingerprint: md5 7d:c5:7e:43:a2:07:c3:93:a7:fe:5c:76:60:2e:a0:4c
Применение
Если ваша задача заключается только в отображении публичного ключа без лишней информации, можно воспользоваться следующим трюком с sed
, который позволяет извлечь именно интересующую строку:
dropbearkey -y -f /etc/dropbear/dropbear_ecdsa_host_key | sed -n 2p
Для сохранения публичного ключа в отдельный файл в целях, например, документирования или передачи другим системам, может быть использована следующая команда:
dbk=/etc/dropbear/dropbear_ecdsa_host_key; dropbearkey -y -f $dbk | sed -n 2p > ${dbk}.pub; chmod 600 ${dbk}.pub
Эта команда сохранит публичный ключ в файл, расширение которого .pub
, и установит права доступа, ограничивающие чтение и запись только для владельца.
Отметим, что приведенные выше команды применимы как к ECDSA ключам, так и к RSA, что делает их универсальными в контексте работы с Dropbear.
Заключение
Таким образом, вы можете эффективно управлять ключами Dropbear SSH сервера, извлекая и используя публичные ключи в формате OpenSSH. Это особенно полезно, если ваша система подразумевает взаимодействие с другими сервисами или требует документирования используемых ключей. Корректное управление ключами – это основа безопасности вашей системы, поэтому крайне важно понимать и правильно применять указанные инструменты.