Проблема тайм-аута с Ruby Fog при загрузке серверов AWS - PullRequest
3 голосов
/ 08 сентября 2011

Я уже некоторое время пытаюсь обеспечить небольшой экземпляр на AWS библиотекой тумана.Я был несколько успешным (в этом случае экземпляр запускается, когда я запускаю этот код), но я продолжаю получать ошибки тайм-аута во время части SSH, и когда я копал глубже, я обнаружил, что они постоянно "AuthentitcationFailed" проблемы.1001 *

Неисправный код выглядит следующим образом:

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 ]

4 голосов
/ 02 декабря 2011

У меня была такая же проблема несколько дней назад, и я действительно обнаружил проблему для моего дела, а отправил ее в систему отслеживания проблем Fog .

Мой коллега использовал connection.bootstrap () с теми же учетными данными AWS, но разными SSH-ключами. Таким образом, открытый ключ "fog_default" уже зарегистрирован, и попытка войти в систему с моей парой ключей не удалась.

Если у вас возникли подобные проблемы, проверьте с помощью connection.key_pairs.get ('fog_default'), был ли зарегистрирован fog_default ранее.

Если это действительно так, у вас есть три варианта решения этой проблемы:

  • Удалите fog_default, запустив: connection.key_pairs.get ('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',
  ...
)
0 голосов
/ 24 ноября 2011

Я бы порекомендовал несколько вещей, чтобы диагностировать проблему (если у вас все еще есть)

  1. Проверьте группы безопасности, чтобы убедиться, что порт 22 открыт для вашего IP / мира (0.0.0.0/0)
  2. Попробуйте подключиться вручную, используя SSH

Если вы все еще видите проблемы, попробуйте

ssh -v -v <normal options>

Это даст вам больше информации о том, что происходит при попытке подключиться к экземпляру.

...