我刚刚注册了亚马逊的新Elastic Beanstalk产品。我无法弄清楚如何SSH到Beanstalk实例。我没有私钥,因为Beanstalk代表我生成了实例。
答案 0 :(得分:424)
我发现这是一个两步过程。这假设您已经设置了密钥对来访问相关区域中的EC2实例。
elasticbeanstalk-default
安全组。编辑安全组以添加SSH访问规则。以下将锁定它以仅允许从特定IP地址进入。
SSH | tcp | 22 | 22 | 192.168.1.1/32
Existing Key Pair
字段中选择密钥对的名称。 实例重新启动后,您需要从AWS Console EC2实例选项卡或通过API获取主机名。然后,您应该能够ssh到服务器上。
$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com
注意:要向环境配置添加密钥对,必须关闭实例的终止保护,因为Beanstalk会尝试终止当前实例并使用KeyPair启动新实例。
注意:如果某些内容无效,请检查Beanstalk应用程序/环境中的“事件”选项卡,找出问题所在。
答案 1 :(得分:112)
Elastic beanstalk CLI v3现在支持使用命令eb ssh
进行直接SSH。 E.g。
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 :(得分:45)
我在2013年8月使用linux客户端和简单的AWS Beanstalk安装(单个EC2实例)的经验如下(基于上面的社区Wiki)
awsweb...
安全组,详细信息应显示在页面底部答案 3 :(得分:29)
EC2实例的“实例操作”菜单中有一个方便的“连接”选项。它将为您提供准确的SSH命令,以使用正确的实例URL执行。 Jabley的整体说明是正确的。
答案 4 :(得分:28)
我也一直在玩这个。
该服务将重新启动,所以煮5分钟咖啡
在同一地区的ec2标签上,您会看到新的正在运行的实例。 使用3中添加的密钥将ssh命名为ec2-user 例如 ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com
答案 5 :(得分:17)
以上答案有点旧。
首先创建一个密钥对,然后将其附加到Elastic Beanstalk环境。
创建密钥对的步骤
将创建的密钥对附加到Elastic Beanstalk环境的步骤
AWS - >服务 - > Elastic Beanstalk
选择您的环境,然后点击左侧的配置。
在配置概述中,从安全性中选择修改。
在虚拟机权限下,选择我们创建的密钥对。
单击“保存”,然后单击“保存配置”。
这需要一些时间来反映您的EC2实例。
答案 6 :(得分:9)
如果您使用弹性bean和EB CLI,只需使用eb ssh
登录实例。您可以使用以下链接中指定的选项
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.html
答案 7 :(得分:3)
您需要使用其公共IP地址直接连接到ec2实例。您无法使用elasticbeanstalk网址进行连接。
您可以在ec2控制台中查找实例IP地址。
您还需要确保端口22已打开。默认情况下,EB CLI在ssh连接完成后关闭端口22。在ssh会话完成后,您可以调用eb ssh -o来保持端口打开。
警告:您应该知道弹性beanstalk可以随时替换您的实例。您的任何弹性beanstalk实例都不保证状态。最好只使用ssh进行测试和调试,因为你修改的任何东西都可以随时消失。
答案 8 :(得分:2)
使用当前UI为ElasticBeanstalk ec2实例设置密钥对的方向是: 警告:这将需要更新ElasticBeanstalk应用程序中的EC2实例。 注意:您需要在此之前在EC2仪表板中创建一个密钥对。
1)在AWS Dashboard中,选择ElasticBeanstalk服务 2)选择要使用的应用程序。 3)选择“配置” 4)在“实例”配置框中选择齿轮(设置)图标。 5)这将带您进入标题为“服务器”的页面,您可以在其中使用所需的密钥对更新“EC2密钥对”下拉字段,然后选择“保存”。
有一点需要注意的是,这可能不适用于具有多个实例的应用程序(但我相信它们可能与密钥对位于同一区域)。
答案 9 :(得分:0)
我来这里是为了寻找一种在配置过程中(我们正在使用Terraform)向Beanstalk创建的实例添加密钥的方法。您可以在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进入框中。
答案 10 :(得分:0)
根据您的环境配置,您在为您的环境创建的EC2实例上可能没有公用IP地址。您可以通过以下方式进行检查:
最后,选择新的EIP,然后从操作菜单中选择关联地址。将该IP与您的EC2实例相关联。您现在应该可以使用eb ssh
进行连接。
您可以通过运行eb ssh --setup
重设连接详细信息。
答案 11 :(得分:0)
如果您使用eb init
来设置CLI到您的环境,那么它应该是
简单
eb ssh --setup
,您可以使用它创建一个新的密钥对,也可以使用一个存在的密钥对。
您也许还可以使用eb use
连接到现有环境,尽管我还没有这样做。
有关安装CLI的详细信息-https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install
答案 12 :(得分:0)
在Mac上,您可以使用brew安装cli:
brew install awsebcli
使用命令行工具,您可以使用以下命令进行ssh:
eb ssh environment-name
,并执行其他操作。假设您已经添加了一个安全组,该安全组允许ip中的ssh。
答案 13 :(得分:0)
Elastic Beanstalk可以将单个EC2密钥对绑定到实例配置文件。使多个用户ssh进入EBS的手动解决方案是将其公共密钥添加到authorized_keys文件中。
答案 14 :(得分:0)
不要将您的 ssh 密钥添加到 elastic beanstalk
正如其他人指出的那样,如今,您可以使用弹性 beanstalk cli eb ssh
连接到您的 ec2 实例。
如果您不能使用 eb cli,而是使用 awscli,或者来到这里寻找一种简单的方法来 ssh 到任何没有主密钥对的 ec2 实例,您也可以使用 aws cli aws ec2-instance-connect
如上所述here。
请注意,cli 方法要求您修改安全策略以允许 ssh 连接,而 eb 会为您处理。
这两种方法都需要一个带有 EC2 实例连接的 AMI,这是当今的默认设置,并且比直接关联密钥更受欢迎,因为您可以允许多个用户以这种方式连接,密钥只会在短时间内添加,您不需要预先考虑它,您可以通过 IAM 保持中央控制权限。如果钥匙持有人离开团队,则无需额外移除。 一般来说,我建议现在不要在 ec2 上设置 ssh 密钥对
答案 15 :(得分:-4)
前一段时间我也遇到了同样的问题。我想使用密钥文件,但亚马逊说某处你无法将密钥文件添加到现有的EC2服务器。对于第一个Beanstalk应用程序,Amazon会为您预配置该应用程序。您需要创建一个新的应用程序,并且可以配置运行Beanstalk应用程序的EC2服务器以使用旧的pem文件(如果使用Putty,则为ppk),或者您可以创建一个新的应用程序。现在你应该可以通过SSH。
然后配置,然后删除旧应用。