2012-03-26 6 views
1

ich verwende Rubin aws-sdk-Instanz in amazone EC2 zu starten, aber ich habe Probleme mit Zugang der erzeugten Instanzen mit ssh hier, was ichkann nicht auf ec2-Instanz zugreifen, die von ruby ​​aws-sdk lib mit ssh erstellt wird?

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") 

tat, aber ich kann die Instanz mit ssh root nicht zugreifen @ip_address, ich habe connection timed out, gibt es etwas, das ich vermisse, bitte jemand mir helfen?

+0

Das Problem besteht darin, dass Sie Ihre neue Instanz in der Sicherheitsgruppe "default" statt der neu erstellten mit einer Ingress-Regel für ssh erstellen/ausführen. –

Antwort

1

Wenn Sie eine Instanz starten, können Sie optional die Sicherheitsgruppe angeben. Wenn Sie die Optionen: security_groups auslassen, wird standardmäßig die Sicherheitsgruppe "Standard" verwendet (Sie können die Sicherheitsgruppe einer Instanz nach dem Start nicht ändern). In Ihrem Beispiel sollten Sie die Sicherheitsgruppe für die gerade erstellte Sicherheitsgruppe angeben.

Eine andere Sache, die zu berücksichtigen ist, ist das Schlüsselpaar anzugeben. Es wird standardmäßig auf eins gesetzt, wenn Sie es nicht einstellen, aber Sie werden dies wahrscheinlich benötigen, um sich bei einem öffentlichen AMI anzumelden.

Hier ist ein Beispiel, das ich gerade lief. Die AMI, die ich benutze, ist die Amazon 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' 

Jetzt sollten Sie in der Lage sein, in die Instanz ssh (manchmal ist es eine ~ 30 Sekunden Verzögerung aus, wenn die Instanzen Status: verfügbar und, wenn es um ssh reagiert).