Сборка кода AWS с ключами развертывания Github Enterprise, запрашивающими парольную фразу

#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
 

не идеально и добавлено довольно много шаблонов, но в нашем сценарии этого достаточно.