【问题标题】:Timeout Problem with Ruby Fog when bootstrapping AWS servers引导 AWS 服务器时 Ruby Fog 的超时问题
【发布时间】:2011-09-07 21:57:43
【问题描述】:

我一直在尝试使用雾库在 AWS 上配置一个小型实例。我已经取得了一定的成功(因为当我运行此代码时,一个实例确实启动了),但是在 SSH 部分我不断收到超时错误,当我深入挖掘时,我发现它们始终是“AuthentitcationFailed”问题。

失败代码如下:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    如果情况确实如此,您可以通过三个选项来解决此问题:

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

    解决方案二如下所示:

    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',
      ...
    )
    

    【讨论】:

      【解决方案2】:

      我会推荐一些东西来诊断问题(如果你仍然有它)

      1. 检查您的安全组以确保端口 22 对您的 IP/世界 (0.0.0.0/0) 开放
      2. 尝试使用 SSH 手动连接

      如果您仍然看到问题,请尝试

      ssh -v -v <normal options>
      

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

      【讨论】:

      • 这似乎需要 22 端口,而您无法将端口设置为其他任何值,例如 10022。这是真的吗?
      • 只需添加-p 10022 即可连接到不同的端口
      猜你喜欢
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      相关资源
      最近更新 更多