Моя система MaaS работает, зачисляет, завербовывает, поручает, выдает ордера, делает военные суды, развертывает и уничтожает. Кажется, что работает juju: загружается локально, устанавливает juju-gui, мои чары разворачиваются, юниты назначаются на службы, как я и ожидал, мои отношения отмечаются и хуки запускаются, и все хорошо отображается в juju-gui.
Чары, которые я использую, представляют собой совместимый контроллер (1) и ведомый (многие) набор. Контроллер должен rsync между собой и каждым из подчиненных. То, что происходит, - то, что ведомые отклоняют попытку, жалуясь, что они не могут открыть файл sseh_host_ed25519_key. (tail -f /var/log/auth.log) (я запускаю скрипт, но пока не очарован, я отправил его на контроллер как ubuntu и запускаю его оттуда)
Я читал, что Ответ довольно прост, выполните команду ssh-keygen -a на каждой машине. Сначала я запускаю это на контроллере, а затем на подчиненном. Я пытаюсь rsync, auth.log говорит, что соединение закрыто [preauth]. Я пытаюсь ssh_copy-id, но он получает "Отказано в доступе. (Publickey)", та же запись в auth.log.
Итак, мои вопросы: куда мне положить ssh-keygen, чтобы он заработал? Чего мне не хватает при раздаче ключей, которые мне достаются?
МААС удостоверится, что/you/имеют доступ к каждому узлу путем добавления ключа, что Juju говорит его (и что ключ является только открытым ключом). Единицы не имеют доступа SSH к себе дизайном (думайте о последствиях безопасности!).
, Если Вы хотели сделать его так, чтобы все единицы или сервисы могли получить доступ друг к другу, у Вас должен быть каждый, какие машины генерируют ключ SSH для пользователя, с которым Вы хотите соединить интерфейсом, тогда отправляют их общедоступный ssh-ключ друг другу через отношение. Таким образом, если бы это для ведущего устройства->, ведомая установка здесь - то, как Вы сделали бы что-то как этот:
name: master-charm
provides:
master:
interface: my-charm-interface
name: slave-charm
requires:
master:
interface: my-charm-interface
Тогда в каждом очаровании, необходимо будет сделать что-то как следующее:
#!/bin/bash
if [ ! -f ~user-you-want-access/.ssh/id_rsa ]; then
ssh-keygen -t rsa -N "" -f ~user-you-want-access/.ssh/id_rsa
chown -R user-you-want-access.user-you-want-access ~user-you-want-access/.ssh
fi
relation-set public-key="$(cat ~user-you-want-access/.ssh/id_rsa.pub)"
#!/bin/bash
key="$(relation-get public-key)"
if [ ! -z "$key" ] && ! grep -q "$key" ~user-you-want-access/.ssh/authorized_keys; then
echo "$key" >> ~user-you-want-access/.ssh/authorized_keys
chown -R user-you-want-access.user-you-want-access ~user-you-want-access/.ssh
fi
Они просто предназначены, чтобы погасить, как Вы смоделировали бы что-то вроде этого. Вы могли сделать то же самое для доступа между самими узлами с помощью отношений однорангового узла.
В ответе на Ваш общий вопрос облачный-init пакет ответственен за генерацию ключей хоста во время первой начальной загрузки на облачных изображениях.
В Вашем более конкретном случае, я не думаю, что он в настоящее время генерирует ed25519 ключи, но это, как было известно, не вызвало проблем ни для каких пользователей. Если это действительно вызывает проблему для Вас, необходимо отметить вариант использования более подробно в ошибка 1382118 . Почему Вам конкретно нужен ed25519 так или иначе?