2011-01-20 105 views
233

我刚刚注册了Amazon的新Elastic Beanstalk产品并非常喜欢它。我无法弄清楚的是如何SSH到一个Beanstalk实例。我没有私钥,因为Beanstalk代表我创建实例。想法?SSH到Elastic Beanstalk实例

感谢, 诺

+0

因此,一旦我终于登录了,我该如何到达我推送我的git repo的文件夹? – Evolve 2013-12-03 10:24:52

+2

好吧,如果你使用ELB CLI的新v3,你可以做'eb ssh` – 2014-11-22 12:39:54

+0

看起来上面的答案有些过时。亚马逊现在有一个很好的文档来说明如何去做。按照上述有关如何创建密钥对的建议。然后按照这个:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.ec2connect.html祝你好运! – 2014-01-22 07:08:48

回答

26

我一直在玩这一点。

  1. 转到您的弹性魔豆的服务标签
  2. 您的应用程序概述转到动作 - >编辑配置
  3. 添加一个键的名称,因为它出现在你的EC2选项卡(同一区域)的该服务将被重新启动使现有的密钥对框,然后按应用更改

使咖啡5分钟

在对同一区域的EC2标签,你会看到你的新的运行实例。 ssh作为ec2-user使用在3 中添加的密钥的公共dns名称,例如, ssh [email protected]

+5

添加“ec2-user”部分是我的问题......这应该与上面的答案合并;)。 – 2013-06-14 13:00:36

381

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

配置安全组

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

    SSH | tcp | 22 | 22 | 192.168.1.1/32 
    

配置弹性青苗应用

  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应用程序/环境中的“Events”选项卡,并查明出了什么问题。

+26

这个答案比其他答案多出两倍票数;技术严谨;并且非常清楚。它有什么问题?为什么不被接受? – 2012-05-15 04:34:15

+4

即使您按照上述说明操作,但如果您收到错误“Permission denied(publickey)”,以下内容可能会解释原因:如果您的EB设置启动多个EC2实例,则必须检查其中哪些获取了​​关联对用它。您只能使用密钥对SSH进入实例。您可以检查EC2实例菜单中的属性以找出结果。 – 2012-10-10 08:22:52

+0

配置我的Beanstalk应用程序以包含来自EC2的密钥对时,它表示“***对选项EC2KeyName设置的更改不会立即生效,您现有的每个EC2实例都将被替换,您的新设置将生效。 **“......但是,我没有看到我的任何EC2实例已经改变......等了大约10分钟。 EC2实例的状态仍处于绿色运行信号。我已经多次刷新实例,但“密钥对名称”的值仍然为空。等待大约10分钟....我错过了什么? – 2013-02-23 19:31:58

28

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

40

我在2013年8月与Linux客户端和一个简单的AWS魔豆安装(单一EC2实例)的经验如下(基于以上社区维基)

配置安全组

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

创建公私密钥对

  1. 从EC2仪表板从左侧面板中选择密钥对
  2. 点击密钥对(顶部),然后输入一个名称,如MYNAME-键 - pair-myregion或任何您喜欢的有效密钥名称。
  3. 确认并接受从浏览器下载的私钥,例如将其保存到您的主目录或您喜欢的任何地方。确保目录只有你的写权限。

副公私密钥对弹性青苗EC2服务器

  1. 一个公共 - 私人密钥对添加到弹性青苗EC2 实例做:服务 - >弹性魔豆 - >我的应用 - >默认 环境带您到默认环境(一个在那里你 上传应用程序)
  2. 点击配置(左侧面板),然后在齿轮/ COG 与“实例”
  3. 相关
  4. 一页题为“服务器”显示
  5. 选择从EC2密钥对您的预建的关键标准杆,并做保存
  6. 显示一些警告信息,这样就再次保存。

连接到AWS EC2实例使用SSH

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

好运

-2

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

enter image description here

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

2

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

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

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

94

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 [email protected] 
3

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

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

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

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

相关问题