在我使用基于 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“启动实例”向导中选择的密钥,而不包含打包程序临时密钥对。
感谢您抽出时间报告此事。
这就是 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 天_⏳。 这有助于我们的维护人员找到并关注活跃的问题。
如果您发现与此类似的问题,请打开一个新问题并完成问题模板,以便我们可以获取进一步调查所需的所有详细信息。
最有用的评论
感谢您抽出时间报告此事。
这就是 AWS 的工作方式或更具体的 cloud-init 工作方式。 您所描述的解决方法实际上是您应该做的。