我正在尝试为我的Github Enterprise repo使用Deploy Key,这样我就可以使用CodeBuild项目来推送新部署的标签。不管我怎么努力,我都不能让它工作。
在本地计算机中:(MacOS)
我使用如下命令生成密钥:ssh-keygen -t ecdsa -b 521 -f $PATH_TO_SSH_KEY -q -N ""
我将AWS SSM Parameter Store中的$PATH_TO_SSH_KEY内容保存为SecureString。
我在我的CodeBuild环境中从参数存储区而不是在我的buildspec.yml中加载这个参数。
我将$PATH_TO_SSH_KEY.pub作为新的部署密钥保存到github企业存储库。
在我的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代理保存密钥并尝试以这种方式克隆:
eval $(ssh-agent)
ssh-add ~/.ssh/id_ecdsa
git push --tags
由于以下消息,此方法失败:
Enter passphrase for /root/.ssh/id_ecdsa:(我的密钥没有密码,它在我的本地机器上运行良好)
问题:
有没有可能让它正常工作?我见过使用代码构建的部署密钥的其他示例,但当我尝试完全相同的设置时,我失败了,并出现上述错误之一。我已经在这上面工作了两天了,所以我已经无计可施了。任何帮助都将不胜感激。
如果需要任何额外的信息,我很乐意在这里得到并编辑它。
发布于 2021-09-29 15:46:01
希望在不久的将来,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 && 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不是很理想,而且添加了一些样板,但在我们的场景中已经足够好了。
https://stackoverflow.com/questions/65349224
复制相似问题