Amazon ec2 EC2如何从您的密钥对安装公钥?

Amazon ec2 EC2如何从您的密钥对安装公钥?,amazon-ec2,Amazon Ec2,我正在调试自定义AMI的创建,不清楚EC2是如何将密钥对的公钥安装到AMI上的。。。我假定它进入~someuser/.ssh/authorized_密钥,但我无法确定这是否在每次启动时都只执行一次,或者如何确定目标用户。更具体地说,cloud init是一个Python模块,每次实例启动时都会运行 您可以在此处浏览代码: /usr/lib/python2.7/dist-packages/cloudinit 获取密钥的部分是DataSource.py和DataSourceEc2.py文件。他们

我正在调试自定义AMI的创建,不清楚EC2是如何将密钥对的公钥安装到AMI上的。。。我假定它进入~someuser/.ssh/authorized_密钥,但我无法确定这是否在每次启动时都只执行一次,或者如何确定目标用户。

更具体地说,
cloud init
是一个Python模块,每次实例启动时都会运行

您可以在此处浏览代码:

 /usr/lib/python2.7/dist-packages/cloudinit
获取密钥的部分是
DataSource.py
DataSourceEc2.py
文件。他们使用URL查询元数据:
http://169.254.169.254/2011-01-01/meta-data/public-keys/

用户可以使用该URL查找密钥列表,然后逐个拾取它们。(通常是一个)。最终他们会问:
http://169.254.169.254/2011-01-01/meta-data/public-keys/0/openssh-key/
然后他们将该密钥复制到默认cloud init用户的
~/.ssh/authorized_keys
文件中

默认cloud init用户(以及所有cloud init配置)在/etc/cloud/cloud.cfg文件中定义。这是cloud.cfg文件的摘录:

user: ubuntu
disable_root: 1
preserve_hostname: False
# datasource_list: ["NoCloud", "ConfigDrive", "OVF", "MAAS", "Ec2", "CloudStack"]

cloud_init_modules:
 - bootcmd
 - resizefs
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - ca-certs
 - rsyslog
 - ssh

cloud_config_modules:
 - disk-setup
 - mounts
 - ssh-import-id
 - locale
 - set-passwords
 - grub-dpkg
 ...
它基本上是一个
yaml
格式配置文件

有关cloud init的更多信息,您可以在此处阅读他们的公共文档:


希望这能有所帮助。

它使用了一个名为cloud init的系统。我认为元数据服务上也提供了密钥。