2012-03-26 82 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]