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

时间:2014-03-05 16:49:25

标签: amazon-ec2

我正在调试自定义AMI的创建,我不清楚EC2如何将你的密钥对的公钥实际安装到你的AMI上...我认为它进入~someuser / .ssh / authorized_keys,但我无法想象如果只完成一次,每次启动,或者如何确定目标用户,则输出。

1 个答案:

答案 0 :(得分:17)

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

您可以在此处浏览代码:

 /usr/lib/python2.7/dist-packages/cloudinit

获取密钥的部分是DataSource.pyDataSourceEc2.py文件。他们使用以下网址查询元数据: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的更多信息,您可以在此处阅读其公开文档:

http://cloudinit.readthedocs.org/en/latest/index.html

希望这有帮助。