Вопрос или проблема
Используя преднастройку 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
Теперь подробнее об этих командах:
-
Создание директории
.ssh
:
mkdir -p /root/.ssh
– Создает директорию, если она еще не существует. Флаг-p
позволяет не выдавать ошибку, если директория уже существует. -
Добавление открытого ключа:
in-target /bin/sh -c "echo '...' >> /root/.ssh/authorized_keys"
– Здесь вы добавляете строку с открытым ключом в файлauthorized_keys
. Использование>>
позволяет добавить ключ в конец файла. -
Установка неоходимых разрешений:
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 или другие инструменты.