Как добавить общий SSH-ключ с помощью файла преднастройки Debian?

Вопрос или проблема

Используя преднастройку Debian, я хочу скопировать открытый ключ в /root/.ssh/authorized_keys с правильными правами, чтобы я мог использовать Ansible для настройки остальной части системы.

Я уже выбрал установку openssh-server, указав d-i pkgsel/include string openssh-server build-essential в файле преднастройки.

Будет ли эта команда поздней корректной?

d-i preseed/late_command string in-target mkdir -p /root/.ssh; \
in-target /bin/sh -c "echo 'ssh-ed25519 AAAAC3NzaC1IAg1wilR9asDXIPwTsvZXasdTXqasdKv0rIqqweAtxGVgup foobar' >> /root/.ssh/authorized_keys"; \
in-target chown -R root:root /root/.ssh/; \
in-target chmod 644 /root/.ssh/authorized_keys; \
in-target chmod 700 /root/.ssh/

Да, это правильный способ.
Больше нечего сказать, но мне нужно 30 символов.

Мне нужно было сделать то же самое, но этого было вполне достаточно, ничего больше не нужно.

d-i preseed/late_command string in-target sh -c "echo 'ssh-ed25519 AA...' > /root/.ssh/authorized_keys"

Ответ или решение

Чтобы добавить открытый SSH-ключ в файл /root/.ssh/authorized_keys с использованием файла преднастройки (preseed) в Debian, можно воспользоваться командой в секции late_command. Наиболее важные шаги включают создание директории .ssh, добавление ключа и установку правильных разрешений. Ваша секция late_command может выглядеть следующим образом:

d-i preseed/late_command string in-target mkdir -p /root/.ssh; \
in-target /bin/sh -c "echo 'ssh-ed25519 AAAAC3NzaC1IAg1wilR9asDXIPwTsvZXasdTXqasdKv0rIqqweAtxGVgup foobar' >> /root/.ssh/authorized_keys"; \
in-target chown -R root:root /root/.ssh; \
in-target chmod 700 /root/.ssh; \
in-target chmod 600 /root/.ssh/authorized_keys

Теперь подробнее об этих командах:

  1. Создание директории .ssh:
    mkdir -p /root/.ssh – Создает директорию, если она еще не существует. Флаг -p позволяет не выдавать ошибку, если директория уже существует.

  2. Добавление открытого ключа:
    in-target /bin/sh -c "echo '...' >> /root/.ssh/authorized_keys" – Здесь вы добавляете строку с открытым ключом в файл authorized_keys. Использование >> позволяет добавить ключ в конец файла.

  3. Установка неоходимых разрешений:

    • chown -R root:root /root/.ssh – Устанавливает владельцем директории .ssh пользователя root.
    • chmod 700 /root/.ssh – Устанавливает права доступа для директории .ssh (только ее владелец может читать, записывать и выполнять).
    • chmod 600 /root/.ssh/authorized_keys – Устанавливает права доступа для файла authorized_keys (только его владелец может читать и записывать).

Важно отметить, что для ключа SSH нужно использовать chmod 600, чтобы обеспечить безопасность, запрещая доступ к файлу всем остальным пользователям.

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

d-i preseed/late_command string in-target sh -c "mkdir -p /root/.ssh && echo 'ssh-ed25519 AA...' > /root/.ssh/authorized_keys"

Хотя этот способ не устанавливает права доступа, он может быть достаточным для некоторых случаев, но не рекомендуется для продакшн-систем.

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

Оцените материал
Добавить комментарий

Капча загружается...