web-dev-qa-db-ja.com

Elastic BeanstalkインスタンスへのSSH

Amazonの新しいElastic Beanstalk製品にサインアップしました。私が理解できないのは、BeanstalkインスタンスにSSHで接続する方法です。 Beanstalkが代わりにインスタンスを生成したため、秘密キーはありません。

264
Benno Waldmann

2段階のプロセスであることがわかりました。これは、関連するリージョンのEC2インスタンスにアクセスするためのキーペアをすでに設定していることを前提としています。

セキュリティグループを構成する

  1. AWSコンソールで、[EC2]タブを開きます。
  2. 関連する地域を選択し、[セキュリティグループ]をクリックします。
  3. そのリージョンでElastic Beanstalkインスタンスを起動した場合は、elasticbeanstalk-defaultセキュリティグループが必要です。
  4. セキュリティグループを編集して、SSHアクセスのルールを追加します。以下は、特定のIPアドレスからの進入のみを許可するためにロックダウンします。

    SSH | tcp | 22 | 22 | 192.168.1.1/32
    

Elastic Beanstalkアプリケーションの環境を設定します

  1. まだキーペアを作成していない場合は、ec2タブの[セキュリティグループ]の下の[キーペア]をクリックして作成します。
  2. AWSコンソールで、Elastic Beanstalkタブを開きます。
  3. 関連する地域を選択します。
  4. 関連する環境を選択
  5. 左ペインで[構成]を選択します。
  6. セキュリティを選択します。
  7. [EC2キーペア:]の下の[Existing Key Pair]フィールドでキーペアの名前を選択します。

インスタンスが再起動したら、AWS Console EC2インスタンスタブから、またはAPI経由でホスト名を取得する必要があります。その後、サーバーにSSH接続できるはずです。

$ ssh -i path/to/keypair.pub [email protected]

注:キーペアを環境設定に追加するには、Beanstalkが現在のインスタンスを終了し、KeyPairで新しいインスタンスを開始しようとするため、インスタンスの終了保護をオフにする必要があります。

注:何かが機能しない場合は、Beanstalkアプリケーション/環境の[イベント]タブを確認し、何が問題だったかを調べてください。

425
jabley

Elastic beanstalk CLI v3は、コマンドeb sshを使用した直接SSHをサポートするようになりました。例えば。

eb ssh your-environment-name

EC2インスタンスのアドレスを見つけるというセキュリティグループを設定する面倒な作業は必要ありません。

このクールなトリックもあります:

eb ssh --force

これにより、ポート22が一時的に0.0.0.0に開かれ、exitになるまで開いたままになります。これにより、手間をかけずに、トップアンサーの利点がビットとブレンドされます。デバッグなどのために、自分以外のユーザーに一時的にアクセスを許可できます。もちろん、彼らがアクセスできるようにするには、ホストに公開鍵をアップロードする必要があります。それをしたら(そしてeb sshの中にいる限り)、他の人は

ssh [email protected]
112
Tal

Linuxクライアントと単純なAWS Beanstalkインストール(単一EC2インスタンス)での2013年8月の私の経験は次のとおりです(上記のコミュニティWikiに基づく)

セキュリティグループを構成する

  1. AWSコンソールで、EC2を選択してEC2ダッシュボードに移動します
  2. 左側のパネルで[インスタンス]をクリックし、接続するインスタンスを選択して、EC2インスタンスが属するセキュリティグループを検出します(私の場合、デフォルト環境と呼ばれるインスタンスは1つだけです)。詳細はページの下部に表示されます-セキュリティグループのフィールドが表示されます-名前をメモします-私の場合は「awsweb ...」。
  3. 左側のパネルから[セキュリティグループ]を選択します。
  4. awsweb...セキュリティグループを選択すると、ページの下部に詳細が表示されます
  5. [受信]タブを選択し、[新しいルールの作成]ドロップダウンから[SSH]を選択します。ローカルマシン(接続元)のIPアドレス/ CIDRを挿入します。 192.168.0.12/32をクリックし、[ルールの追加]および[ルールの変更の適用]をクリックします。

公開鍵と秘密鍵のペアを作成する

  1. EC2ダッシュボードの左側のパネルから[キーペア]を選択します
  2. キーペア(上部)をクリックし、myname-key-pair-myregionなどの名前または任意の有効なキー名を入力します。
  3. ブラウザから秘密鍵のダウンロードを確認し、受け入れて、たとえばホームディレクトリまたは好きな場所に保存します。ディレクトリに書き込み権限のみがあることを確認してください。

公開秘密鍵ペアをElastic Beanstalk EC2サーバーに関連付ける

  1. Elastic Beanstalk EC2インスタンスに公開鍵と秘密鍵のペアを追加するには、次の手順を実行します。[サービス]-> [Elastic Beanstalk]-> [マイアプリ]-> [デフォルト環境]でデフォルト環境(アプリをアップロードする環境)に移動します
  2. (左側のパネルの)[構成]をクリックし、[インスタンス]に関連付けられている歯車/歯車をクリックします
  3. 「サーバー」というタイトルのページが表示されます
  4. EC2キーペアからビルド済みのキーパーを選択し、保存します
  5. いくつかの警告メッセージが表示されますので、もう一度保存してください。

SSHを使用してAWS EC2インスタンスに接続する

  1. ターミナルセッションで、プライベートキー(.pemファイル)を含むディレクトリに変更します。
  2. これにいくつか取り組んできた場合、名前を変更するなどの方法がある場合は、おそらく.ssh/known_hostsについて何かを行う必要があります。そうしないと、ホストのIDが変更されたというエラーが表示される場合があります。
  3. 実行:ssh -i ./myname-key-pair-my-region.pem [email protected]

がんばろう

45
mikemay

EC2インスタンスの[インスタンスアクション]メニューには、便利な[接続]オプションがあります。インスタンスの正しいURLで実行するための正確なSSHコマンドを提供します。 Jableyの全体的な指示は正しいです。

29
Peter

私もこれで遊んでいます。

  1. elastic Beanstalkサービスタブに移動します
  2. アプリケーション概要gotoアクション->設定の編集
  3. (同じ地域の)EC2タブに表示されるキーの名前を既存のキーペアボックスに追加し、変更を適用します

サービスが再開されるので、5分間コーヒーを入れます

同じリージョンのec2タブに、実行中の新しいインスタンスが表示されます。 3で追加されたキーを使用して、ec2-userとしてパブリックDNS名にssh ssh [email protected]

28
Ray Vahey

上記の答えは少し古いです。

最初にキーペアを作成し、それをElastic Beanstalk環境にアタッチします。

キーペアを作成する手順

  1. AWSにログインする
  2. サービス-> EC2
  3. 左側の[ネットワークとセキュリティ]でキーペアを選択します
  4. [新しいキーペアの作成]を選択し、キー名を入力して[作成]をクリックします。キーはシステムに自動的にダウンロードされます。

作成されたキーペアをElastic Beanstalk環境にアタッチする手順

  1. AWS->サービス-> Elastic Beanstalk

  2. 環境を選択し、左側の構成をクリックします。

  3. [構成の概要]で、[セキュリティ]から[変更]を選択します。

  4. [仮想マシンのアクセス許可]で、作成したキーペアを選択します。

  5. 「保存」をクリックしてから、「構成の保存」をクリックします。

これには、EC2インスタンスに反映するのに時間がかかります。

17
singh30

エラスティックBeanとEB CLIを使用している場合は、eb sshを使用してインスタンスにログインします。次のリンクで指定されているオプションを使用できます http://docs.aws.Amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.html

9
Aditya Pandhare

パブリックIPアドレスを使用してec2インスタンスに直接接続する必要があります。 elasticbeanstalk URLを使用して接続することはできません。

インスタンスのIPアドレスは、ec2コンソールで検索して見つけることができます。

また、ポート22が開いていることを確認する必要があります。デフォルトでは、ssh接続が完了すると、EB CLIはポート22を閉じます。 sshセッションの完了後、eb ssh -oを呼び出してポートを開いたままにすることができます。

警告:Elastic Beanstalkはいつでもインスタンスを置き換えることができることを知っておく必要があります。状態は、どのElastic Beantalkインスタンスでも保証されません。変更したものはいつでも消える可能性があるため、テストとデバッグの目的にのみsshを使用することをお勧めします。

3

現在のUIでElasticBeanstalk ec2インスタンスのキーペアを設定する方向は次のとおりです。警告:これには、ElasticBeanstalkアプリのEC2インスタンスの更新が必要です。注:これに先立って、EC2ダッシュボードでキーペアを作成しておく必要があります。

1)AWSダッシュボードで、ElasticBeanstalkサービスを選択します2)使用するアプリケーションを選択します。 3)[構成]を選択します4)[インスタンス]構成ボックスで歯車(設定)アイコンを選択します。 5)これにより、「サーバー」というタイトルのページが表示されます。ここで、「EC2キーペア」ドロップダウンフィールドを目的のキーペアで更新し、「保存」を選択できます。

注意すべきことの1つは、これが複数のインスタンスを持つアプリケーションでは機能しない可能性があることです(ただし、それらがすべてキーペアと同じリージョンにある場合は、おそらくそうだと思います)。

2
adamjk

プロビジョニング中にBeanstalkが作成するインスタンスにキーを追加する方法を探してここに来ました(Terraformを使用しています)。 Terraformでは次のことができます。

resource "aws_elastic_beanstalk_environment" "your-beanstalk" {
   ... 
   setting {
      namespace = "aws:autoscaling:launchconfiguration"
      name      = "EC2KeyName"
      value     = "${aws_key_pair.your-ssh-key.key_name}"
   }
   ...
}

次に、そのキーを使用して、ボックスにSSHで接続できます。

0
Maikon

環境設定によっては、環境用に作成されたEC2インスタンスにパブリックIPアドレスがない場合があります。次の方法で確認できます。

  1. EC2コンソール に移動します
  2. インスタンスを見つけて、説明タブを確認します
  3. パブリックIPがない場合...
  4. ナビゲーションでElastic IPsをクリックします
  5. をクリックします新しいアドレスを割り当てます
  6. プールにAmazonを選択します
  7. クリック割り当て

最後に、新しいEIPを選択して、アクションメニューからAssociate addressを選択します。そのIPをEC2インスタンスに関連付けます。これで、eb sshを使用して接続できるはずです。

eb ssh --setupを実行して、接続の詳細をリセットできます。

0