git - 使用 Github Enterprise Deploy key 的 AWS CodeBuild 要求输入密码

标签 git amazon-web-services ssh aws-codebuild key-pair

我正在尝试将 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_ecdsagit 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/

相关文章:

git - Ansible Playbook : Permission denied (publickey), 无法从远程存储库读取

git - 如何重新连接 git 存储库和 svn 存储库?

linux - 尽管文件在那里,但 Git 无法在远程找到文件

amazon-web-services - 在 AWS API 上获取 ThrottlingException : Rate exceeded, 状态代码:400

asp.net - 在 Elastic Beanstalk 上访问 Dockerized ASP.NET Core Web API 时出现 502 Bad Gateway

python - 有没有办法在 Robot Framework 的 ssh 连接中使用 telnet?

git - 我想推送到一个不是 master 的分支。那就是我所做的

linux - 使用脚本更改用户 shell?

amazon-web-services - 如何用aws cli或sdk更改API Gateway当前阶段的部署版本?

java - Jenkins 文件 : varibale not "parsed" inside SSH command