SSH到Elastic Beanstalk实例

问题描述 投票:263回答:12

我刚刚注册了亚马逊的新Elastic Beanstalk产品。我无法弄清楚如何SSH到Beanstalk实例。我没有私钥,因为Beanstalk代表我生成了实例。

amazon-web-services amazon-ec2 ssh amazon-elastic-beanstalk
12个回答
429
投票

我发现这是一个两步的过程。这假设您已经设置了密钥对来访问相关区域中的EC2实例。

Configure Security Group

  1. 在AWS控制台中,打开EC2选项卡。
  2. 选择相关区域,然后单击安全组。
  3. 如果您在该区域中启动了Elastic Beanstalk实例,则应该有一个elasticbeanstalk-default安全组。
  4. 编辑安全组以添加SSH访问规则。以下将锁定它以仅允许从特定IP地址进入。 SSH | tcp | 22 | 22 | 192.168.1.1/32

Configure the environment of your Elastic Beanstalk Application

  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应用程序/环境中的“事件”选项卡,找出问题所在。


0
投票

我来到这里寻找一种方法来添加一个密钥到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}"
   }
   ...
}

然后,您可以使用该密钥进入框中。


0
投票

根据您的环境配置,您可能没有在为您的环境创建的EC2实例上具有公共IP地址。您可以查看:

  1. EC2 Console
  2. 找到您的实例并检查“描述”选项卡
  3. 如果没有公共知识产权......
  4. 单击导航上的弹性IP
  5. 单击“分配新地址”
  6. 选择亚马逊游泳池
  7. 单击“分配”

最后,选择新的EIP并从操作菜单中选择关联地址。将该IP与您的EC2实例相关联。您现在应该能够使用eb ssh进行连接。

您可以通过运行eb ssh --setup重置连接详细信息。


-4
投票

前一段时间我也遇到了同样的问题。我想使用密钥文件,但亚马逊说某处你无法将密钥文件添加到现有的EC2服务器。对于第一个Beanstalk应用程序,Amazon会为您预配置该应用程序。您需要创建一个新的应用程序,并且可以配置运行Beanstalk应用程序的EC2服务器以使用旧的pem文件(如果使用Putty,则为ppk),或者您可以创建一个新的应用程序。现在你应该能够SSH了。

然后配置,然后删除旧的应用程序。


114
投票

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]

45
投票

我在2013年8月使用linux客户端和简单的AWS Beanstalk安装(单个EC2实例)的经验如下(基于上面的社区Wiki)

Configure Security Group

  1. 在AWS控制台中,选择EC2以转到EC2仪表板
  2. 通过单击左侧面板中的Instances,然后选择要连接的实例(在我的情况下只有一个 - 称为默认环境),发现EC2实例所属的安全组。详细信息显示在页面底部 - 您应该看到安全组的字段 - 记下名称 - 在我的例子中是“awsweb ...”。
  3. 从左侧面板中选择安全组。
  4. 选择awsweb...安全组,详细信息应显示在页面底部
  5. 选择Inbound选项卡,然后从“Create a New Rule”下拉列表中选择SSH。插入本地计算机的IP地址/ CIDR(您打算从中连接),例如192.168.0.12/32并单击“添加规则”和“应用规则更改”。

Create Public-Private Key Pair

  1. 从EC2仪表板中,从左侧面板中选择Key Pairs
  2. 单击密钥对(在顶部)并输入名称,例如myname-key-pair-myregion或您喜欢的任何有效密钥名称。
  3. 确认并接受从浏览器下载私钥,例如将其保存到您的主目录或您喜欢的任何位置。确保该目录仅具有写入权限。

Associate the Public Private Key Pair with the Elastic Beanstalk EC2 Server

  1. 要将公钥 - 私钥对添加到Elastic Beanstalk EC2实例,请执行以下操作:服务 - > Elastic Beanstalk - >我的应用程序 - >默认环境将您带到默认环境(您上传应用程序的环境)
  2. 单击配置(在左侧面板上),然后单击与“实例”关联的齿轮/齿轮
  3. 显示名为“服务器”的页面
  4. 从EC2密钥对中选择预先构建的密钥并执行保存
  5. 显示一些警告消息,因此请再次保存。

Connect to AWS EC2 Instance using SSH

  1. 在终端会话中更改为包含您的私钥(.pem文件)的目录。
  2. 如果你有一些事情,你应该做一些关于.ssh / known_hosts的事情,如果你有一个如重命名它。否则,您可能会收到有关主机身份已更改的错误消息。
  3. 做:ssh -i ./myname-key-pair-my-region.pem [email protected]

祝好运


29
投票

EC2实例的“实例操作”菜单中有一个方便的“连接”选项。它将为您提供准确的SSH命令,以使用正确的实例URL执行。 Jabley的整体说明是正确的。


28
投票

我也一直在玩这个。

  1. 转到弹性beanstalk服务选项卡
  2. 在您的应用程序概述转到操作 - >编辑配置
  3. 在EC2选项卡(对于相同区域)中显示的键的名称添加到现有密钥对框并点击应用更改

该服务将重新启动,所以煮5分钟咖啡

在同一区域的ec2选项卡上,您将看到新的运行实例。使用3中添加的密钥将公共DNS名称ssh改为ec2-user ssh [email protected]


18
投票

以上答案有点旧。

首先创建一个密钥对,然后将其附加到Elastic Beanstalk环境。

创建密钥对的步骤

  1. 登录AWS
  2. 服务 - > EC2
  3. 在NETWORK&SECURITY左下方选择密钥对
  4. 选择Create new Key Pair,键入key name并单击create。密钥将自动下载到您的系统。

将创建的密钥对附加到Elastic Beanstalk环境的步骤

  1. AWS - >服务 - > Elastic Beanstalk
  2. 选择您的环境,然后单击左侧的配置。
  3. 在Configuration overview中,从Security选择modify。
  4. 在虚拟机权限下,选择我们创建的密钥对。
  5. 单击“保存”,然后单击“保存配置”。

这需要一些时间来反映您的EC2实例。


9
投票

如果您使用弹性bean和EB CLI,只需使用eb ssh登录实例。您可以使用以下链接http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.html中指定的选项


3
投票

您需要使用其公共IP地址直接连接到ec2实例。您无法使用elasticbeanstalk网址进行连接。

您可以在ec2控制台中查找实例IP地址。

您还需要确保端口22已打开。默认情况下,EB CLI在ssh连接完成后关闭端口22。在ssh会话完成后,您可以调用eb ssh -o来保持端口打开。

警告:您应该知道弹性beanstalk可以随时替换您的实例。您的任何弹性beanstalk实例都不保证状态。最好只使用ssh进行测试和调试,因为你修改的任何内容都可以随时消失。


2
投票

使用当前UI为ElasticBeanstalk ec2实例设置密钥对的方向是:警告:这将需要更新ElasticBeanstalk应用程序中的EC2实例。注意:在此之前,您需要在EC2仪表板中创建一个密钥对。

1)在AWS Dashboard中,选择ElasticBeanstalk服务2)选择要使用的应用程序。 3)选择“配置”4)在“实例”配置框中选择齿轮(设置)图标。 5)这将带您进入标题为“服务器”的页面,您可以在其中使用所需的密钥对更新“EC2密钥对”下拉字段,然后选择“保存”。

需要注意的一点是,对于具有多个实例的应用程序,这可能不起作用(但我相信它们可能与密钥对在同一区域)。

© www.soinside.com 2019 - 2024. All rights reserved.