我正在尝试将 Deploy Keys 用于我的 Github Enterprise 存储库,以便我可以使用 CodeBuild 项目推送新部署的标签。无论我尝试什么,我都无法让它工作。
在我的本地机器上:(MacOS)
我正在使用这样的命令生成 key :ssh-keygen -t ecdsa -b 521 -f $PATH_TO_SSH_KEY -q -N ""
我在存钱 $PATH_TO_SSH_KEY
AWS SSM Parameter Store 中的内容作为 SecureString。
我正在我的 CodeBuild 环境中从参数存储而不是在我的 buildspec.yml 中加载此参数。
我在存钱 $PATH_TO_SSH_KEY.pub
到 github 企业存储库作为新的部署 key 。
在我的 CodeBuild 项目 buildspec.yml 中:
我正在将 key 保存到文件中:printf -- "$GITHUB_PRIVATE_KEY" > ~/.ssh/id_ecdsa
现在,我从这里尝试了两种不同的方法,但都失败了。
方法一:
将企业站点的指纹保存到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.
方法二:使用 SSH 代理保存 key 并尝试以这种方式克隆:
eval $(ssh-agent)
ssh-add ~/.ssh/id_ecdsa
git push --tags
由于以下消息,此方法失败:Enter passphrase for /root/.ssh/id_ecdsa:
(我的 key 没有密码,它在我的本地机器上运行良好)题:
有可能让这个工作吗?我已经看到其他使用代码构建部署 key 的示例,但是当我尝试完全相同的设置时,我因上述错误之一而失败。我已经为此工作了 2 天,所以我已经无能为力了。任何帮助将不胜感激。
如果需要任何其他信息,我很乐意在此处获取并编辑它。
最佳答案
Hopefully in the near future, codebuild will begin supporting deploy keys natively through AWS instead of in the buildspec file
是的,我同意这将是一个很好的补充。现在我们正在解决这个缺点,只需将 SSH 私钥以纯文本形式保存,但在 SSM 参数存储中加密存储,例如:
version: 0.2
env:
parameter-store:
SSH_PRIVATE_KEY: /ssm/key/name/here
phases:
install:
on-failure: ABORT
commands:
- mkdir -p ~/.ssh && chmod 0700 ~/.ssh
- echo -n "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa && chmod 0400 ~/.ssh/id_rsa
- md5sum ~/.ssh/id_rsa
build:
on-failure: ABORT
commands:
- eval $(ssh-agent)
- ssh-add ~/.ssh/id_rsa
不理想,添加了很多样板,但在我们的场景中已经足够了。
关于git - 使用 Github Enterprise Deploy key 的 AWS CodeBuild 要求输入密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65349224/