簡體   English   中英

無法訪問使用ssh由ruby aws-sdk lib創建的ec2實例?

[英]can't access ec2 instance which is created by ruby aws-sdk lib using 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 ,我缺少什么,請有人幫我嗎?

啟動實例時,可以選擇提供安全組。 如果省略: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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM