#git #amazon-web-services #ssh #aws-codebuild #key-pair
#git #amazon-веб-сервисы #ssh #aws-сборка кода #ключевая пара
Вопрос:
Я пытаюсь использовать ключи развертывания для своего репозитория Github Enterprise, чтобы я мог отправлять недавно развернутые теги с помощью проекта CodeBuild. Я не могу заставить его работать, что бы я ни пытался.
На моем локальном компьютере: (macOS)
Я генерирую ключи, используя такую команду: ssh-keygen -t ecdsa -b 521 -f $PATH_TO_SSH_KEY -q -N ""
Я сохраняю $PATH_TO_SSH_KEY
содержимое в хранилище параметров AWS SSM в виде строки безопасности.
Я загружаю этот параметр в свою среду сборки кода из хранилища параметров, а не в свой buildspec.yml.
Я сохраняю $PATH_TO_SSH_KEY.pub
в репозитории github enterprise в качестве нового ключа развертывания.
В моем проекте CodeBuild buildspec.yml:
Я сохраняю ключ в файл: printf -- "$GITHUB_PRIVATE_KEY" > ~/.ssh/id_ecdsa
Теперь я попробовал два разных подхода отсюда, и оба они терпят неудачу.
Подход 1:
Сохраните отпечаток корпоративного сайта в known_hosts: ssh-keyscan "$GITHUB_ENTERPRISE_URL" >> ~/.ssh/known_hosts
Настройте git на использование моих учетных данных: GIT_SSH_COMMAND="ssh -i ~/.ssh/id_ecdsa" git push --tags
Этот подход завершается ошибкой:
git@<ENTERPRISE_URL>: Permission denied (publickey).
fatal: Could not read from remote repository.
Подход 2:
Используйте SSH Agent для сохранения ключей и попробуйте клонировать таким образом:
eval $(ssh-agent)
ssh-add ~/.ssh/id_ecdsa
git push --tags
Этот подход терпит неудачу из-за следующего сообщения:
Enter passphrase for /root/.ssh/id_ecdsa:
(У моего ключа нет кодовой фразы, и он отлично работает с моего локального компьютера)
Вопрос:
Возможно ли заставить это работать? Я видел другие примеры развертывания ключей с помощью сборки кода, но когда я пытаюсь выполнить ту же самую настройку, я терплю неудачу с одной из вышеперечисленных ошибок. Я работаю над этим уже 2 дня, так что я на пределе своих возможностей. Любая помощь будет высоко оценена.
Если потребуется какая-либо дополнительная информация, я был бы рад получить ее и отредактировать здесь.
Комментарии:
1. После публикации этого вопроса я решил использовать другой подход, просто чтобы получить то, что мне было нужно. Я бы все равно хотел сделать это таким образом, но это моя работа, и у меня нет времени продолжать работать над этим прямо сейчас. Надеюсь, в ближайшем будущем codebuild начнет поддерживать ключи развертывания изначально через AWS, а не в файле buildspec.
Ответ №1:
Надеюсь, в ближайшем будущем codebuild начнет поддерживать ключи развертывания изначально через AWS, а не в файле buildspec
Да, я согласен, это было бы отличным дополнением. На данный момент мы работаем над устранением недостатка, просто сохраняя закрытый ключ SSH в виде обычного текста, но хранящийся в зашифрованном виде в хранилище параметров SSM, например:
version: 0.2
env:
parameter-store:
SSH_PRIVATE_KEY: /ssm/key/name/here
phases:
install:
on-failure: ABORT
commands:
- mkdir -p ~/.ssh amp;amp; chmod 0700 ~/.ssh
- echo -n "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa amp;amp; chmod 0400 ~/.ssh/id_rsa
- md5sum ~/.ssh/id_rsa
build:
on-failure: ABORT
commands:
- eval $(ssh-agent)
- ssh-add ~/.ssh/id_rsa
не идеально и добавлено довольно много шаблонов, но в нашем сценарии этого достаточно.