3

フォグ ライブラリを使用して 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"
})

インスタンスのスプールアップに時間がかかりすぎることが原因である場合があることを多くの読書が教えてくれましたが、これは非常に一貫しています (試行するたびに発生します)。誰かが私が間違っていることを見ていますか?

4

2 に答える 2

4

私は数日前に同じ問題を抱えていましたが、実際に私のケースの問題を見つけて、それを Fog issue tracker に提出しました

私の同僚は、connection.bootstrap() を同じ AWS 資格情報で使用していましたが、SSH キーは異なっていました。そのため、「fog_default」公開鍵は既に登録されており、私の鍵ペアでログインしようとして失敗しました。

同様の問題が発生している場合は、以前に fog_default が登録されていたかどうかを connection.key_pairs.get('fog_default') で確認してください。

これが実際に当てはまる場合、この問題を回避するための 3 つのオプションがあります。

  • 次を実行して fog_default を削除します: connection.key_pairs.get('fog_default').destroy を実行し、bootstrap() を介して新しい公開鍵を登録します。
  • カスタム キーをカスタム名で手動で登録する
  • Fog.credential をカスタム名に設定して、bootstrap() が「デフォルト」の代わりにこの名前を使用して公開鍵を登録するようにします

解決策 2 は次のようになります。

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 を設定することだけなので、私が好む解決策 3 は次のようになります。

Fog.credential = :my_custom_key

connection.servers.bootstrap(
  :private_key_path => './keys/my_custom_key',
  :public_key_path => './keys/my_custom_key.pub',
  ...
)
于 2011-12-02T13:30:43.063 に答える
0

問題を診断するためにいくつかのことをお勧めします(まだ問題がある場合)

  1. セキュリティ グループをチェックして、ポート 22 が IP / 世界 (0.0.0.0/0) に対して開いていることを確認します。
  2. SSH を使用して手動で接続してみる

それでも問題が発生する場合は、試してください

ssh -v -v <normal options>

これにより、インスタンスに接続しようとしたときに何が起こっているかについて、より多くの情報が得られます。

于 2011-11-24T04:25:51.610 に答える