【问题标题】:Retrieving RSA key from AWS Secrets Manager in CodeBuild corrupts key "invalid format"在 CodeBuild 中从 AWS Secrets Manager 检索 RSA 密钥会损坏密钥“无效格式”
【发布时间】:2021-10-22 07:42:05
【问题描述】:

在 CodeBuild 运行期间,我从 SecretsManager 检索 rsa 密钥,这是用于访问 BitBucket 中的私有源的私有密钥。为此,我将私钥复制到一个秘密中,然后在我的 buildspec 文件中,我有以下 sn-p:

  "env": {
    "secrets-manager": {
      "LOCAL_RSA_VAR": "name-of-secret"
    }
  },

在构建规范的安装部分:

"install": {
  "commands": [
    "echo $LOCAL_RSA_VAR" > ~/.ssh/id_rsa,
    "chmod 600 ~/.ssh/id_rsa",
    "yarn install"
  ]
},

但是,这总是以错误告终:

Load key "/root/.ssh/id_rsa": invalid format
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.

为了确定密钥是否错误,我尝试将 rsa_id 文件上传到 S3,然后从那里下载并使用以下命令来使用它:

"install": {
  "commands": [
    "aws s3 cp s3://the-bucket-name/id_rsa ~/.ssh/id_rsa",
    "chmod 600 ~/.ssh/id_rsa",
    "yarn install"
  ]
},

这很好用。

所以我想问题是......有没有人尝试过这个并且取得了更好的成功?你能想到我做的不对吗?

【问题讨论】:

  • 您能否重命名 ~/.ssh/id_rsa 文件中的 1 个文件并执行 diff 和/或 od -ax?回声可能会弄乱它或权限?(例如,尝试交换回声(添加触摸)和chmod);只是一些想法-希望它有所帮助
  • 查找 ~/.ssh/id_rsa 并确保它是您认为的 - 确保它是纯文本格式
  • 感谢您的建议。事件虽然“捕获”秘密管理器 env 变量不起作用(它只是打印 ***),但我能够区分文件的内容与 env var,后者反过来打印内容,因为它们不同。这导致我进行调整,最终解决了问题。再次感谢!

标签: environment-variables ssh-keys aws-codepipeline aws-codebuild aws-secrets-manager


【解决方案1】:

通过比较环境变量的输出与 S3 文件中的文件内容,我能够得到答案。 ('cat' 不会打印出秘密 mgr env 变量的内容)它最终会导致 env var 的内容被 'echo' 命令更改。

最终对我有用的解决方案是:

printenv LOCAL_RSA_VAR > ~/.ssh/id_rsa

此命令没有改变 rsa 的内容,我能够成功使用证书。

总结一下,这是我成功的做法:

  1. 生成新密钥
  2. 使用命令“pbcopy
  3. 已将其粘贴到 Secret Manager 中的新密钥中
  4. 使用上面的第一组代码让 buildspec 文件将内容检索到 env 变量中,然后在 buildspec 文件的安装命令部分中使用上面的“printenv”命令将其保存到默认的 ssh 位置。

希望这对遇到相同问题的人有所帮助。

更新:我发现如果 RSA 作为自己的秘密存储为一大块文本,则此方法有效。如果您尝试将其添加为 json 对象的一部分,即:

{
  "some": "thing",
  "rsa_id": "<the rsa key here>"
}

这似乎不起作用。我发现内容是用空格代替换行符来改变的。这是我在每个运行“od -ax”并比较它们时发现的:

own secret:
R   I   V   A   T   E  sp   K   E   Y   -   -   -   -   -  nl

json secret:
R   I   V   A   T   E  sp   K   E   Y   -   -   -   -   -  sp

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 2021-06-25
    • 2019-02-15
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多