Packer: 未从 ~/.ssh/authorized_keys (AWS AMI) 中删除 Packer 临时密钥对

创建于 2016-08-03  ·  3评论  ·  资料来源: hashicorp/packer

在我使用基于 Amazon Linux AMI 的打包程序创建 AMI 之后,如果我启动该 AMI 的一个实例并 ssh 进入,我会在~/.ssh/authorized_keys文件中看到临时打包程序密钥对,这是一个安全漏洞。 我希望在保存 AMI 之前删除该文件。

我能够通过在打包器模板中显式删除~/.ssh/authorized_keys来解决此问题(详情如下)

打包机版本

打包机 v0.10.0

主机平台

CentOS Linux 版本 7.2.1511(核心)

来自PACKER_LOG=1 packer build template.json调试日志输出。

这是打包程序的输出:

https://gist.github.com/tleyden/4cc13b530f08bcaef04f5233bf43daee

抱歉,我没有做 PACKER_LOG=1,但如果需要可以重新运行

重现错误所需的_最简单的示例模板和脚本

模板: https :

脚本:
使用 Jenkins Packer 插件并通过以下方式将变量传递给 packer:

-var 'source_ami=${source_ami}' -var 'ssh_username=${ssh_username}' -var 'couchbase_server_package_name=${couchbase_server_package_name}' -var 'couchbase_server_package_url=${couchbase_server_package_url}' -var 'couchbase_sync_gateway_package_base_url=${couchbase_sync_gateway_package_base_url}' -var 'couchbase_sync_gateway_package=${couchbase_sync_gateway_package}' -var 'couchbase_server_version=${couchbase_server_version}' -var 'couchbase_sync_gateway_version=${couchbase_sync_gateway_version}' -var 'couchbase_server_edition=${couchbase_server_edition}' -var 'sync_gateway_edition=${sync_gateway_edition}'

解决方法

我在打包模板中添加了以下配置器:

    {
        "type": "shell",
        "inline": [
        "rm /home/ec2-user/.ssh/authorized_keys"
        ]
    }

启动 AMI 后,它只包含在 AWS“启动实例”向导中选择的密钥,而不包含打包程序临时密钥对。

buildeamazon invalid

最有用的评论

感谢您抽出时间报告此事。

这就是 AWS 的工作方式或更具体的 cloud-init 工作方式。 您所描述的解决方法实际上是您应该做的。

所有3条评论

感谢您抽出时间报告此事。

这就是 AWS 的工作方式或更具体的 cloud-init 工作方式。 您所描述的解决方法实际上是您应该做的。

很抱歉恢复一个死线程,但是因为我找到了它,然后从亚马逊找到了更多信息,所以我想我会在这里为其他人贡献它:

https://aws.amazon.com/articles/how-to-share-and-use-public-amis-in-a-secure-manner/

简而言之,他们建议以 root 身份运行以下命令以删除所有 authorized_keys 文件:

find / -name "authorized_keys" -exec rm -f {} \;

注意:链接页面上的命令混合使用了普通破折号 (-) 和其他会返回错误的东西。 手动输入命令或直接复制上面的命令应该可以工作。

我将锁定此问题,因为它已关闭 _30 天_⏳。 这有助于我们的维护人员找到并关注活跃的问题。

如果您发现与此类似的问题,请打开一个新问题并完成问题模板,以便我们可以获取进一步调查所需的所有详细信息。

此页面是否有帮助?
0 / 5 - 0 等级