Amazonの新しいElastic Beanstalkオファリングにサインアップしました。私が理解できないことは、BeanstalkインスタンスにSSHで接続する方法です。私に代わってBeanstalkがインスタンスを生成したため、私には秘密鍵がありません。
eb ssh
Amazonの新しいElastic Beanstalkオファリングにサインアップしました。私が理解できないことは、BeanstalkインスタンスにSSHで接続する方法です。私に代わってBeanstalkがインスタンスを生成したため、私には秘密鍵がありません。
eb ssh
回答:
2ステップのプロセスであることがわかりました。これは、関連するリージョンのEC2インスタンスにアクセスするためのキーペアがすでに設定されていることを前提としています。
elasticbeanstalk-default
そのリージョンでElastic Beanstalkインスタンスを起動した場合は、セキュリティグループが必要です。セキュリティグループを編集して、SSHアクセスのルールを追加します。以下は、特定のIPアドレスからの進入のみを許可するようにロックダウンします。
SSH | tcp | 22 | 22 | 192.168.1.1/32
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アプリケーション/環境の[イベント]タブを確認して、問題の原因を見つけてください。
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
eb ssh production
。また、セットアップオプションを使用して、特定の環境を設定することができますeb ssh production --setup
LinuxクライアントとシンプルなAWS Beanstalkインストール(単一のEC2インスタンス)を使った2013年8月の私の経験は次のとおりです(上記のコミュニティWikiに基づく)
awsweb...
セキュリティグループを選択すると、ページの下部に詳細が表示されます幸運を
私もこれで遊んでいます。
サービスが再開されるので、5分間コーヒーを作る
同じリージョンのec2タブに、実行中の新しいインスタンスが表示されます。3で追加したキーを使用して、ec2-userとしてパブリックDNS名にsshします。例:ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com
上記の回答は少し古いです。
最初にキーペアを作成してから、Elastic Beanstalk環境にアタッチします。
キーペアを作成する手順
作成したキーペアをElastic Beanstalk環境にアタッチする手順
AWS->サービス-> Elastic Beanstalk
環境を選択し、左側の構成をクリックします。
構成の概要で、[セキュリティ]から[変更]を選択します。
[仮想マシンのアクセス許可]で、作成したキーペアを選択します。
[保存]をクリックしてから、[構成の保存]をクリックします。
EC2インスタンスに反映されるまでに少し時間がかかります。
Elastic BeanとEB CLIを使用eb ssh
している場合は、を使用してインスタンスにログインします。次のリンクhttp://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.htmlで指定されているオプションを使用できます。
パブリックIPアドレスを使用してec2インスタンスに直接接続する必要があります。elasticbeanstalk urlを使用して接続することはできません。
インスタンスのIPアドレスは、ec2コンソールで調べることで確認できます。
また、ポート22が開いていることを確認する必要があります。デフォルトでは、ssh接続が完了すると、EB CLIはポート22を閉じます。eb ssh -oを呼び出して、sshセッションの完了後もポートを開いたままにすることができます。
警告:Elastic Beanstalkはいつでもインスタンスを置き換えることができることを知っておく必要があります。Elastic Beanstalkインスタンスの状態は保証されません。変更したものはいつでも消えてしまう可能性があるため、テストとデバッグの目的でのみsshを使用することをお勧めします。
現在の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でボックスにアクセスできます。
eb init
環境に合わせてCLIを設定している場合は、次のように簡単です。
eb ssh --setup
これにより、新しい鍵ペアを作成したり、既存の鍵ペアが存在する場合はそれを使用したりできます。
またeb use
、私はまだ行っていませんが、既存の環境に接続することもできます。
CLIのインストールの詳細-https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install
環境構成によっては、環境用に作成されたEC2インスタンスにパブリックIPアドレスがない場合があります。次の方法で確認できます。
最後に、新しいEIPを選択し、アクションメニューから[ アドレスの関連付け ] を選択します。そのIPをEC2インスタンスに関連付けます。eb ssh
今すぐ接続できるはずです。
を実行すると、接続の詳細をリセットできeb ssh --setup
ます。
私も少し前に同じ問題に遭遇しました。キーファイルを使用したかったのですが、Amazonのどこかで、キーファイルを既存のEC2サーバーに追加できないとのことです。最初のBeanstalkアプリケーションでは、Amazonがアプリケーションを事前設定します。新しいアプリケーションを作成する必要があり、Beanstalkアプリを実行するEC2サーバーで古いpemファイル(Puttyを使用している場合はppk)を使用するように構成するか、新しいものを作成できます。これで、SSHを実行できるようになります。
次に設定して、古いアプリを削除します。