2012-03-26 87 views
1

我使用红宝石AWS-SDK在女将EC2实例启动,但我通过使用SSH,在这里我做了什么无法访问使用ssh通过ruby aws-sdk lib创建的ec2实例?

ec2 = AWS::EC2.new(:access_key_id => ACCESS_KEY_ID, :secret_access_key => SECRET_ACCESS_KEY, :ec2_endpoint => "ec2.sa-east-1.amazonaws.com") 
securitygrp = ec2.security_groups.create('mysecgrp') 
securitygrp.authorize_ingress(:tcp, 22) 
ec2.instances.create(:image_id => "ami-082df215") 

与接入问题创建的实例,但使用SSH的根,我不能访问实例@ip_address,我得到connection timed out,有什么我想念,请任何人帮助我?

+0

问题是您在“默认”安全组中创建/运行您的新实例,而不是使用ssh的入口规则创建新实例。 – 2012-03-30 02:12:59

回答

1

启动实例时,可以选择提供安全组。如果您省略:security_groups选项,则它将默认为“默认”安全组(您不能在启动后更改实例的安全组)。在您的示例中,您应该将安全组指定为您刚创建的安全组。

要考虑的另一件事是指定密钥对。如果你没有设置它,它会默认为一个,但你可能需要这个来登录到公共艾滋病。

这是我刚跑过的一个例子。我使用的AMI是亚马逊linux ami。

AWS.config(:access_key_id => '...', :secret_access_key => '...') 
ec2 = AWS::EC2.new(:ec2_endpoint => "ec2.sa-east-1.amazonaws.com") 

# create a security group and authorize ssh 
sg = ec2.security_groups.create('my-security-group') 
sg.authorize_ingress(:tcp, 22) 

# create a key pair and write it to disk 
key_pair = ec2.key_pairs.create('my-key-pair') 
File.open("#{ENV['HOME']}/.ssh/my-key-pair.pk", 'w') do |file| 
    file.write key_pair.private_key 
end 
require 'fileutils' 
FileUtils.chmod(0600, "#{ENV['HOME']}/.ssh/my-key-pair.pk") 

instance = ec2.instances.create(
    :image_id => 'ami-3c3be421', 
    :key_name => key_pair.name, 
    :security_groups => [sg]) 

sleep 1 while instance.status == :pending 

puts instance.ip_address 
#=> '1.2.3.4' 

现在你应该可以使用SSH连接实例(有时指的是从实例状态是〜30秒延迟:可用,并且它响应SSH)。

# some amis require you to login as root, others as ec2-user 
$ ssh -i ~/.ssh/my-key-pair.pk [email protected]