1

我正在使用 ruby​​ aws-sdk 在 amazone EC2 中启动实例,但我无法使用 ssh 访问创建的实例,这就是我所做的

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 root@ip_address 访问该实例,我得到了connection timed out,有什么我遗漏的,请任何人帮助我?

4

1 回答 1

1

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

要考虑的另一件事是指定密钥对。如果您不设置它,它将默认为一个,但您可能需要它来登录公共 ami。

这是我刚刚运行的一个示例。我使用的 AMI 是 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'

现在您应该能够通过 ssh 进入实例(有时从实例状态为 :available 到响应 ssh 之间会有大约 30 秒的延迟)。

# some amis require you to login as root, others as ec2-user
$ ssh -i ~/.ssh/my-key-pair.pk ec2-user@1.2.3.4
于 2012-03-27T05:46:35.950 回答