引导AWS服务器时Ruby Fog的超时问题

时间:2011-09-07 21:57:44

标签: ruby amazon-ec2 amazon-web-services fog

我已经尝试了一段时间,在AWS上使用雾库配置一个小实例。我已经有点成功了(因为一个实例在我运行此代码时会进行调整),但是我在SSH部分期间一直遇到超时错误,当我深入挖掘时,我发现它们始终存在“AuthentitcationFailed”问题。 / p>

失败的代码如下:

require 'rubygems'
require "fog"

connection = Fog::Compute.new({
  provider:              "AWS",
  aws_secret_access_key: SECRET_KEY,
  aws_access_key_id:     ACCESS_KEY
})

server = connection.servers.bootstrap({
  private_key_path:  "~/.ssh/id_rsa", 
  public_key_path:   "~/.ssh/id_rsa.pub",
  username: "ubuntu"
})

许多阅读告诉我,有时这只是因为实例需要很长时间才能完成,但这是非常一致的(每当我尝试它时都会发生)。有谁看到我做错了什么?

2 个答案:

答案 0 :(得分:4)

我前几天遇到了同样的问题,实际上我的案例和the problem找到了submitted it to the Fog issue tracker

我的一位同事正在使用具有相同AWS凭据但不同SSH密钥的connection.bootstrap()。因此,“fog_default”公钥已经注册,并且尝试使用我的密钥对登录失败。

如果您遇到类似问题,请检查connection.key_pairs.get('fog_default'),如果之前已注册了fog_default。

如果确实如此,您有三种方法可以解决此问题:

  • 通过运行:connection.key_pairs.get('fog_default')删除fog_default。通过bootstrap销毁并注册新的公钥()
  • 以自定义名称
  • 手动注册自定义密钥
  • 将Fog.credential设置为自定义名称,以便bootstrap()使用此名称而不是“default”来注册您的公钥

解决方案二看起来像这样:

Fog.credentials = Fog.credentials.merge({
  :private_key_path => "./keys/my_custom_key",
  :public_key_path => "./keys/my_custom_key.pub"
})

if connection.key_pairs.get('my_custom_key').nil?
  public_key = IO.read('./keys/my_custom_key.pub')
  connection.import_key_pair('my_custom_key', public_key)
end

server = connection.servers.bootstrap(
  :key_name =>  'my_custom_key',
  ...
)

解决方案三,我更喜欢,因为我需要做的唯一改变是设置Fog.credential,看起来像这样:

Fog.credential = :my_custom_key

connection.servers.bootstrap(
  :private_key_path => './keys/my_custom_key',
  :public_key_path => './keys/my_custom_key.pub',
  ...
)

答案 1 :(得分:0)

我建议一些事情来诊断问题(如果你还有它)

  1. 检查您的安全组以确保端口22对您的IP /世界开放(0.0.0.0/0)
  2. 尝试使用SSH手动连接
  3. 如果您仍然遇到问题,请尝试

    ssh -v -v <normal options>
    

    这将为您提供有关尝试连接实例时所发生情况的更多信息。