Amazon の新しい Elastic Beanstalk サービスにサインアップしました。私が理解できないのは、Beanstalk インスタンスに SSH で接続する方法です。Beanstalk が私に代わってインスタンスを生成したため、私は秘密鍵を持っていません。
17 に答える
2段階のプロセスであることがわかりました。これは、関連するリージョンの EC2 インスタンスにアクセスするためのキーペアが既に設定されていることを前提としています。
セキュリティ グループの構成
AWS コンソールで、EC2 タブを開きます。
関連するリージョンを選択し、[セキュリティ グループ] をクリックします。
elasticbeanstalk-default
そのリージョンで Elastic Beanstalk インスタンスを起動した場合は、セキュリティ グループが必要です。セキュリティ グループを編集して、SSH アクセスのルールを追加します。以下は、特定の IP アドレスからの侵入のみを許可するようにロックダウンします。
SSH | tcp | 22 | 22 | 192.168.1.1/32
Elastic Beanstalk アプリケーションの環境を設定する
- キー ペアをまだ作成していない場合は、[ec2] タブの [セキュリティ グループ] の下にある [キー ペア] をクリックして作成します。
- AWS コンソールで、Elastic Beanstalk タブを開きます。
- 該当する地域を選択してください。
- 関連する環境を選択
- 左ペインで [構成] を選択します。
- [セキュリティ] を選択します。
- [EC2 キー ペア:] の下で、
Existing Key Pair
フィールドでキーペアの名前を選択します。
これらの手順を実行した後、Health が Degraded に設定されている場合
これは正常であり、EC2 インスタンスが更新されていることを意味します。数秒待ってください。再び OK になります。
インスタンスが再起動したら、AWS コンソールの [EC2 インスタンス] タブから、または API を介してホスト名を取得する必要があります。その後、サーバーに ssh できるはずです。
$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com
注: 環境構成にキーペアを追加するには、Beanstalk が現在のインスタンスを終了し、キーペアで新しいインスタンスを開始しようとするため、インスタンスの終了保護をオフにする必要があります。
注: 何かが機能しない場合は、Beanstalk アプリケーション/環境の「イベント」タブをチェックして、何が問題なのかを調べてください。
2013 年 8 月に Linux クライアントと単純な AWS Beanstalk インストール (単一の EC2 インスタンス) を使用した私の経験は次のとおりです (上記の Community Wiki に基づく)
セキュリティ グループの構成
- AWS コンソールで、EC2 を選択して EC2 ダッシュボードに移動します。
- 左側のパネルで [インスタンス] をクリックし、接続するインスタンスを選択して、EC2 インスタンスが属するセキュリティ グループを見つけます (私の場合は、デフォルト環境と呼ばれるインスタンスが 1 つしかありません)。詳細はページの下部に表示されます。セキュリティ グループのフィールドが表示されます。名前をメモしておいてください。私の場合は「awsweb...」です。
- 左側のパネルから [セキュリティ グループ] を選択します。
awsweb...
セキュリティ グループを選択すると、ページの下部に詳細が表示されます。- [Inbound] タブを選択し、[Create a New Rule] ドロップダウンから [SSH] を選択します。192.168.0.12/32 などのローカル マシン (接続元) の IP アドレス/CIDR を挿入し、[ルールの追加] と [ルールの変更の適用] をクリックします。
公開鍵と秘密鍵のペアを作成する
- EC2 ダッシュボードの左側のパネルから [キー ペア] を選択します。
- [キー ペア] (上部) をクリックし、myname-key-pair-myregion などの名前または任意の有効なキー名を入力します。
- ブラウザーからの秘密鍵のダウンロードを確認して受け入れ、たとえば、ホーム ディレクトリまたは好きな場所に保存します。ディレクトリに書き込み権限のみがあることを確認してください。
公開秘密キー ペアを Elastic Beanstalk EC2 サーバーに関連付ける
- 公開鍵と秘密鍵のペアを Elastic Beanstalk EC2 インスタンスに追加するには、[サービス] -> [Elastic Beanstalk] -> [マイ アプリ] -> [既定の環境] を選択して、既定の環境 (アプリをアップロードする場所) に移動します。
- [構成] (左側のパネル) をクリックし、[インスタンス] に関連付けられているギア/コグをクリックします。
- 「サーバー」というタイトルのページが表示されます
- EC2 キー ペアから事前構築済みのキー パーを選択し、[保存] を実行します。
- 警告メッセージが表示されるので、もう一度保存してください。
SSH を使用して AWS EC2 インスタンスに接続する
- ターミナル セッションで、秘密鍵 (.pem ファイル) を含むディレクトリに移動します。
- これで数回行ったことがある場合は、.ssh/known_hosts の名前を変更するなどの方法がある場合は、おそらく何かを行う必要があります。そうしないと、ホストの ID が変更されたというエラーが発生する可能性があります。
- 実行: ssh -i ./myname-key-pair-my-region.pem ec2-user@ec2-some-address.us-west-2.compute.amazonaws.com
幸運を
私もこれで遊んでいます。
- Elastic Beanstalk サービス タブに移動します
- アプリケーションの概要でアクションに移動 --> 構成を編集
- EC2 タブ (同じリージョン) に表示されるキーの名前を既存のキーペア ボックスに追加し、[変更を適用] をクリックします。
サービスを再開するので、5分間コーヒーを作ってください
同じリージョンの ec2 タブに、実行中の新しいインスタンスが表示されます。3 で追加したキーを使用して、ec2-user としてパブリック dns 名に ssh します。例: ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com
EC2 インスタンスの「インスタンス アクション」メニューには、便利な「接続」オプションがあります。インスタンスの正しい URL で実行する正確な SSH コマンドが表示されます。Jabley の全体的な指示は正しいです。
Elastic Bean と EB CLI を使用している場合はeb ssh
、インスタンスにログインするために使用します。次のリンクで指定されているオプションを使用できます
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.html
Mac では、brew を使用して cli をインストールできます。
brew install awsebcli
コマンド ライン ツールを使用すると、次のように ssh できます。
eb ssh environment-name
また、他の操作を行います。これは、IP からの ssh を許可するセキュリティ グループを追加したことを前提としています。
Amazon は、SSM (Simple Systems Manager) を介してインスタンスに SSH 接続するためのより優れた方法をリリースしました。SSM 内のSession Managerツールを使用すると、AWS API キーのみを使用して SSH を実行できます。次の理由により、通常の SSH よりも優れています。
- ポート 22 を開く必要はありません。
- SSH セッションのログを保持します。
- 共有 SSH キーは必要ありません。認証情報は、本来あるべき IAM ユーザーに関連付けられています。
- パブリック IP アドレスを持たず、プライベート サブネットにあるインスタンスで動作します。
Elastic Beanstalk 環境をセットアップして、AWS SSM 経由で SSH を許可する
次の手順は、環境ごとに 1 回実行する必要があります。
Elastic Beanstalk > ENVIRONEMNT_NAME > Configuration > Security に移動し、「IAM インスタンス プロファイル」を見つけます (デフォルトでは、これは「aws-elasticbeanstalk-ec2-role」です)。これはステップ 2 の ROLE_NAME です。
IAM > ロール > ROLE_NAME に移動します。アクセス許可の下に、「AmazonSSMManagedInstanceCore」を追加します。
[システム マネージャー] > [セッション マネージャー] > [設定] > [編集] に移動します。「Run As Support」を有効にし、「Run As Defualt User」を「ec2-user」(または Elastic Beanstalk サーバーのデフォルト ユーザー)に設定します。
IAM の変更が反映されるまでに時間がかかる場合があることに注意してください (~10 分)。AWS のセットアップが完了し、「TargetNotConnected」エラーが発生した場合は、10 ~ 15 分待ってから再試行してください。
AWS SSM を使用した SSH
これを設定すると、インスタンスに SSH で接続する方法として 3 つのオプションがあります。
AWS Web コンソールから。[AWS Systems Manager] > [Session Manager] > [Start Session] に移動します。SSH 接続するマシンを選択します。これにより、ブラウザで SSH ターミナルが起動します。
AWS CLI を使用します。以下の「AWS CLI セットアップ」の手順を参照してください。
eb-ssmを使用します。eb-ssm は、EB CLI コマンドのドロップイン置換であるコマンド ライン ツールです
eb ssh
。これは、AWS CLI をラップし、EB CLI 設定をピギーバックすることで実現します。eb-ssm には、以下の「AWS CLI セットアップ」手順も必要であることに注意してください。
AWS CLI のセットアップ
AWS CLI または eb-ssm を使用してターミナルから SSH 接続する場合は、次の手順を実行します。これらの手順は、コンピューターごとに 1 回実行する必要があります。
AWS CLI をインストールします: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
セッションマネージャープラグインをインストールします: https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
免責事項: 私は eb-ssm の主な作成者です。
現在の UI で ElasticBeanstalk ec2 インスタンスのキーペアを設定する方向は次のとおりです。 警告: これには、ElasticBeanstalk アプリで EC2 インスタンスの更新が必要になります。注: これを行う前に、EC2 ダッシュボードでキー ペアを作成しておく必要があります。
1) AWS ダッシュボードで、ElasticBeanstalk サービスを選択します 2) 使用するアプリケーションを選択します。3) [構成] を選択します。 4) [インスタンス] 構成ボックスで歯車 (設定) アイコンを選択します。5) これにより、「サーバー」というタイトルのページが表示されます。ここで、「EC2 キー ペア」ドロップダウン フィールドを目的のキー ペアで更新し、「保存」を選択できます。
注意すべきことの 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 接続できます。
私も少し前に同じ問題に遭遇しました。キーファイルを使いたかったのですが、Amazonはどこかで既存のEC2サーバーにキーファイルを追加できないと言っています。最初の Beanstalk アプリケーションでは、Amazon がアプリケーションを事前設定します。新しいアプリケーションを作成する必要があり、Beanstalk アプリを実行する EC2 サーバーを構成して、古い pem ファイル (Putty を使用している場合は ppk) を使用するか、新しいものを作成できます。これで SSH できるはずです。
次に、古いアプリを構成してから削除します。