gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:57:26 26 4
gpt4 key购买 nike

我一直在尝试使用雾库在 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"
})

大量阅读告诉我,有时这只是因为实例需要很长时间才能假脱机,但这是非常一致的(每次我尝试时都会发生)。有没有人看到我做错了什么?

最佳答案

我前几天遇到了同样的问题,居然找到了the problem对于我的情况和submitted it to the Fog issue tracker .

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

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

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

  • 运行以下命令删除 fog_default:connection.key_pairs.get('fog_default').destroy 并通过 bootstrap() 注册您的新公钥
  • 以自定义名称手动注册您的自定义 key
  • 将 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',
...
)

关于ruby - 引导 AWS 服务器时 Ruby Fog 的超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com