Elastic BeanstalkインスタンスへのSSH


304

Amazonの新しいElastic Beanstalkオファリングにサインアップしました。私が理解できないことは、BeanstalkインスタンスにSSHで接続する方法です。私に代わってBeanstalkがインスタンスを生成したため、私には秘密鍵がありません。


それで、ようやくログインしたら、Imがgitリポジトリをpushするフォルダにどのようにアクセスしますか?
進化

上記の回答は多少古くなっているようです。Amazonは、今それを行う方法についての良い文書を持っています。キーペアの作成方法については、上記の提案に従ってください。次に、これに従ってください:<br> <br> docs.aws.amazon.com/elasticbeanstalk/latest/dg/…頑張ってください!
ジョーダンマイケルラッシング

4
まあ、ELB CLIの新しいv3を使用している場合は、次のことができますeb ssh
Sharoon Thomas

回答:


491

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

セキュリティグループの構成

  1. AWSコンソールで、EC2タブを開きます。
  2. 関連する地域を選択し、[セキュリティグループ]をクリックします。
  3. elasticbeanstalk-defaultそのリージョンでElastic Beanstalkインスタンスを起動した場合は、セキュリティグループが必要です。
  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コンソールのEC2インスタンスタブから、またはAPIを介してホスト名を取得する必要があります。これで、サーバーにSSHで接続できるはずです。

$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com

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

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


41
この回答の投票数は、他の回答の2倍です。技術的に厳密です。そして非常に明確です。それの何が問題になっていますか?なぜ受け入れられないのですか?

6
上記の手順を実行しても「Permission denied(publickey)」というエラーが表示される場合、以下が理由を説明している可能性があります:EBセットアップが複数のEC2インスタンスを起動する場合、どのキーペアがそれ。インスタンスにSSHで接続できるのは、キーペアのみです。EC2インスタンスのメニューでプロパティを調べて調べることができます。
パーQuested Aronsson

27
ここでインターフェースが変更された可能性があります。私にとって、2番目のセクションのステップ4と5は少し異なりました。関連する環境を選択してダッシュボードを開き、左側の[構成]を選択する必要がありました。「インスタンス」の横にある設定の歯車アイコンをクリックすると、サーバー設定ページが表示されます。ドロップダウンからEC2キーペアを選択できたので便利でした。すばらしい回答をありがとうございます!
ダリン2013年

12
sshコマンドの場合は、秘密鍵(.pem)ファイルとuser_name @ public_dns_name(公開鍵ではなく、.pub拡張子で答えが示されているため)を指定する必要があります。Amazon Linuxの場合、デフォルトのユーザー名はec2-userです。RHEL5の場合、ユーザー名は多くの場合rootですが、ec2-userの場合があります。Ubuntuの場合、ユーザー名はubuntuです。SUSE Linuxの場合、ユーザー名はrootです。それ以外の場合は、AMIプロバイダーに確認してください。(クレジット:docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
yacc

5
この設定は、[構成]の[セキュリティ]タブに移動しました(したがって、手順6では、[インスタンス]ではなく[セキュリティ]を選択します)
delucasvb

128

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

eb ssh your-environment-name

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

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

eb ssh --force

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

ssh ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com

2
CLI v3を自分でインストールしたところ、問題なく動作しました。追加するだけで、コマンドに環境を追加して環境を指定できます(例:)eb ssh production。また、セットアップオプションを使用して、特定の環境を設定することができますeb ssh production --setup
jmera

うーん、いいえ。これには、秘密鍵が〜/ .sshディレクトリにすでにあることが必要です。持っている人もいれば持っていない人もいます。そうでない場合でも、作成してダウンロードし、EBで設定する必要があります。
ホルヘオルピネル2018

49

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

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

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

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

  1. ターミナルセッションで、秘密キー(.pemファイル)を含むディレクトリに移動します。
  2. これまでにいくつか行ったことがあれば、名前の変更などを行っている場合は、おそらく.ssh / known_hostsについて何かを行う必要があります。そうしないと、ホストのIDが変更されたというエラーが発生する可能性があります。
  3. 実行:ssh -i ./myname-key-pair-my-region.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com

幸運を


3
sshコマンドでは、秘密鍵(.pem)ファイルとuser_name @ public_dns_nameを指定する必要があります。Amazon Linuxの場合、デフォルトのユーザー名はec2-userです。RHEL5の場合、ユーザー名は多くの場合rootですが、ec2-userの場合があります。Ubuntuの場合、ユーザー名はubuntuです。SUSE Linuxの場合、ユーザー名はrootです。それ以外の場合は、AMIプロバイダーに確認してください。(クレジット:docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
yacc

この質問は、鍵ペア部分を追加するための最良の説明です。しかし、私はeb-cliを使用してSSH部分を実行するのが簡単でした。それでも、これも賛成しました。
ニック

35

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

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

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

同じリージョンのec2タブに、実行中の新しいインスタンスが表示されます。3で追加したキーを使用して、ec2-userとしてパブリックDNS名にsshします。例:ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com


5
「ec2-user」の部分を追加することが私の問題でした...これは上記の回答とマージする必要があります;)
Kirill Fuchs 2013年

30

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


24

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

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

キーペアを作成する手順

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

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

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

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

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

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

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

EC2インスタンスに反映されるまでに少し時間がかかります。



3

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

インスタンスのIPアドレスは、ec2コンソールで調べることで確認できます。

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

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


2

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

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

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


1

プロビジョニング中に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でボックスにアクセスできます。


1

eb init環境に合わせてCLIを設定している場合は、次のように簡単です。

eb ssh --setup これにより、新しい鍵ペアを作成したり、既存の鍵ペアが存在する場合はそれを使用したりできます。

またeb use、私はまだ行っていませんが、既存の環境に接続することもできます。

CLIのインストールの詳細-https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install


1

Macでは、brewを使用してcliをインストールできます。

brew install awsebcli

コマンドラインツールを使用すると、次のコマンドでsshを実行できます。

eb ssh environment-name

その他の操作も行います。これは、IPからのsshを許可するセキュリティグループを追加していることを前提としています。


0

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

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

最後に、新しいEIPを選択し、アクションメニューから[ アドレスの関連付け ] を選択します。そのIPをEC2インスタンスに関連付けます。eb ssh今すぐ接続できるはずです。

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


-5

私も少し前に同じ問題に遭遇しました。キーファイルを使用したかったのですが、Amazonのどこかで、キーファイルを既存のEC2サーバーに追加できないとのことです。最初のBeanstalkアプリケーションでは、Amazonがアプリケーションを事前設定します。新しいアプリケーションを作成する必要があり、Beanstalkアプリを実行するEC2サーバーで古いpemファイル(Puttyを使用している場合はppk)を使用するように構成するか、新しいものを作成できます。これで、SSHを実行できるようになります。

ここに画像の説明を入力してください

次に設定して、古いアプリを削除します。


3
これは間違っています。既存のbeanstalkアプリにキーファイルを追加できます。自分自身を殺す/再構築します。自分でアプリケーションを削除/作成する必要はありません。
2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.