и со следующим в

роект Node.JS содержит ссылки на частные репозитории NPM, размещенные на github. Это прекрасно работает в местном масштабе, но я изо всех сил пытаюсь заставить это работать над Elastic Beanstalk.

dependencies: {
  ...
  "express": "^4.12.4",
  "jsonwebtoken": "^5.0.5",
  "my-private-module": "[email protected]:<my-user>/<my-repo>.git#<my-version>",
  ...
}

-

Мне нужно иметь возможность настроить рабочую конфигурацию SSH для git на моих экземплярах Elastic Beanstalk без необходимости хранить секретные ключи и т. Д. В управлении исходным кодом.

Очевидно, что экземпляры EB не имеют необходимых ключей SSH для доступа к моим личным репозиториям на github. Если я использую URL-адреса в стиле HTTPS сusername:[email protected] встроенный, работает нормально. Это также работает с использованиемметод меток предлагается github (который по сути является пользователем: pass). Но я не хочу, чтобы какие-либо учетные данные возвращались в систему контроля версий, поэтому я пытаюсь заставить клонирование из github работать через SSH на моих экземплярах EB.

Я пробовал миллион способов, в том числеnpm preinstall сценарии в соответствии сэтот блог, который работал до npm2, где было выполнено изменение предустановки для запуска после построения дерева, и PR, чтобы исправить эту проблему, все еще ожидает рассмотрения.

Я пробовал.ebextensions конфигурация команд, которая пытается вызватьgit config разместитьinsteadof на [email protected] в URL-адрес HTTPS с токеном OAUTH, полученным из переменной среды (хитро само по себе, поскольку переменные env в данный момент не задаются в цикле запуска, а отсутствие $ HOME приводит к путанице в git config).

Я также пробовал различные способы использования.ebextensions настроить SSH на моих экземплярах EB, в том числеэто решение из комментариев на упомянутый пост в блоге, Это в основном то, где я застрял сейчас.

Я успешно создал пару ключей, настроил ее в своем профиле github и убедился, что закрытый ключ можно использовать на локальном клиенте для клонирования моего репозитория.Я положил свой закрытый ключ и файл конфигурации ssh на приватную корзину S3Я создал.ebextensions files конфигурация, которая копирует эти два файла из моего ведра S3 в/tmp/.ssh/, в соответствии сэтот примерЯ создал отладкуcommands .ebextensions конфигурация, которая перечисляет /tmp/.ssh и показывает, что файлы были успешно загружены с S3:

/tmp/.ssh/config содержит:

Host github.com
    IdentityFile /tmp/.ssh/deploy_key
    IdentitiesOnly yes
    UserKnownHostsFile=/dev/null
    StrictHostKeyChecking no

/tmp/.ssh/deploy_key содержит мой закрытый ключ, который проверен на локальную работу.

Тем не менее, git по-прежнему выдает ошибку:

npm ERR! Command failed: git clone --template=/tmp/.npm/_git-remotes/_templates --mirror ssh://[email protected]/[.....]
npm ERR! Cloning into bare repository '/tmp/.npm/_git-remotes/git-ssh-git-github-com-[...]
npm ERR! Host key verification failed.
npm ERR! fatal: Could not read from remote repository.
npm ERR! 
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.

Теперь у меня заканчиваются идеи. Моим лучшим предположением было бы то, что /tmp/.ssh - это не путь, по которому git ищет файл конфигурации ssh - возможно, это было, когда было предложено связанное решение, но могло измениться в более поздних AMI: s и т. Д. Используемая среда когда EB запускается, кажется, немного ограничен; команды запускаются от имени пользователяnodejs но / tmp, похоже, используется в качестве домашнего каталога, хотя $ HOME нигде не установлен.

Как я могу заставить git забрать мою конфигурацию SSH и, следовательно, использовать мой ключ SSH? Как я могу узнать, где git ищет файл конфигурации SSH? Обычно он находится в ~ / .ssh, но поскольку $ HOME не установлен, хорошо ... Это должно быть легко, но сводит меня с ума.

Ответы на вопрос(1)

Ваш ответ на вопрос