我已经尝试了一段时间,在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"
})
许多阅读告诉我,有时这只是因为实例需要很长时间才能完成,但这是非常一致的(每当我尝试它时都会发生)。有谁看到我做错了什么?
答案 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。
如果确实如此,您有三种方法可以解决此问题:
解决方案二看起来像这样:
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)
我建议一些事情来诊断问题(如果你还有它)
如果您仍然遇到问题,请尝试
ssh -v -v <normal options>
这将为您提供有关尝试连接实例时所发生情况的更多信息。