не удается получить доступ к экземпляру ec2, созданному ruby ​​​​aws-sdk lib с использованием ssh?

я использую 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, я что-то упустил, пожалуйста, помогите мне?


person user1124358    schedule 26.03.2012    source источник
comment
Проблема в том, что вы создаете/запускаете свой новый экземпляр в группе безопасности по умолчанию, а не только что созданную с правилом входа для ssh.   -  person Trevor Rowe    schedule 30.03.2012


Ответы (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 (иногда происходит ~ 30-секундная задержка с момента, когда состояние экземпляра становится доступным, и когда он отвечает на ssh).

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