2012年12月28日金曜日

"cloud-init"で"Key Pair"の公開鍵をEC2起動時に自動で".ssh/authorized_keys"に登録する(CentOS6)

スズキです。

下記のように"cloud-init"で、EC2起動時にいろいろと処理を行う方法を紹介してきました。
今回はEC2起動時の定番の処理である、"Key Pair"の公開鍵を".ssh/authorized_keys"に
登録する処理を"cloud-init"で実現してみます。(といっても設定ファイルの調整のみです)

設定ファイルの調整とリブート


今まで通りの"root"でのログインにするため、下記のように
"user, disable_root, ssh_genkeytypes"を指定して、"cloud_init_modules"に"ssh"も
追加しておきます。
# cat /etc/cloud/cloud.cfg
manage_etc_hosts: localhost
user: root
disable_root: false
ssh_genkeytypes: [ rsa, dsa ]

cloud_init_modules:
 - resizefs
 - update_etc_hosts
 - ssh
...
設定できたらリブートします。
# reboot

".ssh/authorized_keys"とログの確認


".ssh/authorized_keys"は次のように登録されていることが確認できました。
(ということは当然SSHでのログインも成功しています)
# cat /root/.ssh/authorized_keys 

ssh-rsa AAAA...AAAA suz-lab_ap-northeast-1
ログ(/var/log/cloud-init.log)も下記のように該当するものが出力されています。
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] cloud-init[INFO]: cloud-init start running: Thu, 27 Dec 2012 09:15:34 +0000. up 9.67 seconds
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] __init__.py[DEBUG]: searching for data source in ['DataSourceNoCloudNet', 'DataSourceConfigDriveNet', 'DataSourceOVFNet', 'DataSourceEc2']
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] DataSourceEc2.py[DEBUG]: removed the following from metadata urls: ['http://instance-data:8773']
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] DataSourceEc2.py[DEBUG]: Using metadata source: 'http://169.254.169.254'
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] DataSourceEc2.py[DEBUG]: crawl of metadata service took 0s
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] __init__.py[DEBUG]: found data source DataSourceEc2
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] cloud-init[DEBUG]: found data source: DataSourceEc2
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] __init__.py[DEBUG]: handling bootcmd with freq=None and args=[]
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] __init__.py[DEBUG]: handling resizefs with freq=None and args=[]
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] cc_resizefs.py[DEBUG]: resizing root filesystem (type=ext4, maj=202, min=65)
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] __init__.py[DEBUG]: handling set_hostname with freq=None and args=[]
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] cc_set_hostname.py[DEBUG]: populated /etc/hostname with ip-10-0-32-171 on first boot
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] __init__.py[DEBUG]: handling rsyslog with freq=None and args=[]
Dec 27 18:15:34 ip-10-0-32-171 [CLOUDINIT] __init__.py[DEBUG]: handling ssh with freq=None and args=[]

次は"set-passwords"、特に"ssh_pwauth"。。。
--------
http://www.suz-lab.com

0 コメント: