Remove default SSH host keys before publishing an AMI

AMIs that have the same ssh host key pairs as other public amis will be made private by amazon to prevent man-in-the-middle attacks, so always remove SSH Host Key Pairs (they will be regenerated with new unique keys automatically)

rm /etc/ssh/ssh_host_dsa_key
rm /etc/ssh/ssh_host_dsa_key.pub
rm /etc/ssh/ssh_host_key
rm /etc/ssh/ssh_host_key.pub
rm /etc/ssh/ssh_host_rsa_key
rm /etc/ssh/ssh_host_rsa_key.pub

Creating a EC2 Micro instance via Fog

0.03c/hour (14€/month) is pretty cheap for a small server so lets try this 🙂

Generate and download a key-pair, so you can login to the instance via ssh.

AMI-id used is a micro ebs ubuntu 10.04 instance on eu-west-1, choose your own at http://uec-images.ubuntu.com/releases/lucid/release

Be sure to add ssh port to your security group or you will get a nice “port 22: Connection timed out”

Start the servers!

require 'fog'
fog = Fog::Compute.new(
  :provider => 'AWS',
  :region=>'eu-west-1',
  :aws_access_key_id => 'yyy',
  :aws_secret_access_key => 'xxxx'
)

# start a server
server = fog.servers.create(
  :image_id=>'ami-311f2b45',
  :flavor_id=>'t1.micro',
  :key_name => 'pey-pair-name'
)

# wait for it to get online
server.wait_for { print "."; ready? }

# public address -> ec2-79-125-45-252.eu- west-1.compute.amazonaws.com -> ssh into it
server.dns_name

# instance id -> find it again
fog.servers.get(server.id)

# shutdown
server.destroy

Connect via ssh

ssh -i KEY-PAIR.pem ubuntu@SERVER-DNS-NAME