我刚刚注册了亚马逊的新弹性 Beanstalk 服务,但我不知道如何 SSH 到 Beanstalk 实例。因为 Beanstalk 是代表我生成实例的,所以我没有私钥。
我刚刚注册了亚马逊的新弹性 Beanstalk 服务,但我不知道如何 SSH 到 Beanstalk 实例。因为 Beanstalk 是代表我生成实例的,所以我没有私钥。
我发现这是一个2步骤的过程。这假设你已经设置了密钥对来访问相关地区的EC2实例。
在AWS控制台中,打开EC2标签。
选择相关地区并单击安全组。
如果您在该地区启动了Elastic Beanstalk实例,则应该有一个名为elasticbeanstalk-default
的安全组。
编辑安全组以添加SSH访问规则。以下内容将仅允许从特定IP地址进行入站访问。
SSH | tcp | 22 | 22 | 192.168.1.1/32
现有密钥对
字段中选择密钥对的名称。如果在这些步骤之后,您发现健康状态设置为降级
那是正常的,它只意味着EC2实例正在更新。稍等几秒钟,它就会恢复正常。
一旦实例重新启动,您需要从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现在支持使用命令eb ssh
进行直接SSH。例如:
eb ssh your-environment-name
没有必要费时费力地设置安全组或查找EC2实例地址。
还有一个很酷的技巧:
eb ssh --force
这将暂时强制将端口22对0.0.0.0开放,并保持该端口一直开放,直到您退出
。这融合了一些最佳答案的好处,而没有麻烦。您可以暂时授予其他人访问权限以进行调试等操作。当然,您仍需要将他们的公钥上传到主机以使其能够访问。一旦您这样做了(并且只要您在eb ssh
内部),其他人就可以
ssh ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com
eb ssh production
。你还可以使用设置选项来设置特定的环境,例如 eb ssh production --setup
。 - jmera关于在2013年8月使用linux客户端和简单的AWS Beanstalk安装(单个EC2实例)的经验如下(基于上面的社区Wiki):
awsweb...
安全组,详细信息应显示在页面底部祝好运
我也在尝试这个。
服务将被重新启动,因此可以冲杯咖啡等待5分钟。
在同一区域的EC2选项卡上,您将看到新的运行实例。使用第3步添加的密钥以ec2-user身份ssh连接到公共DNS名称,例如: ssh ec2-user@ec2-xx-xxx-xx-xxx.compute-1.amazonaws.com
'Instance Actions' 菜单中有一个方便的 'Connect' 选项,专门用于 EC2 实例。它将给出确切的 SSH 命令,以及正确的实例网址。Jabley 的整体说明是正确的。
以上答案有些过时。
首先创建密钥对,然后将其附加到弹性 Beanstalk 环境。
创建密钥对的步骤
将创建的密钥对附加到 Elastic Beanstalk 环境的步骤
AWS -> 服务 -> 弹性 Beanstalk
选择您的环境,然后单击左侧的配置。
在配置概述中,从安全性中选择修改。
在虚拟机权限下选择我们创建的密钥对。
单击保存,然后单击保存配置。
这需要一些时间才能反映到您的 EC2 实例上。
以下步骤需要每个环境执行一次。
进入Elastic Beanstalk > ENVIRONEMNT_NAME > Configuration > Security, 找到“IAM instance profile”(默认为“aws-elasticbeanstalk-ec2-role”)。在第二步中这将是ROLE_NAME。
进入IAM > Roles > ROLE_NAME。在权限下添加“AmazonSSMManagedInstanceCore”。
进入Systems Manager > Session Manager > Preferences > Edit。启用“Run As Support”,并将“Run As Default User”设置为“ec2-user”(或您的Elastic Beanstalk服务器的默认用户)。
请注意,IAM更改可能需要一些时间(约10分钟)才能传播。如果您已完成AWS设置并收到“TargetNotConnected”错误,则等待10-15分钟后重试。
设置完毕后,现在有三种选项可供您如何SSH进入实例:
通过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或eb-ssm从终端进行SSH,请执行以下步骤。这些步骤需要每台计算机执行一次。
安装 AWS CLI:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
安装 Session Manager 插件:https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
免责声明:我是 eb-ssm 的主要作者。
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连接。
您需要直接使用EC2实例的公共IP地址进行连接。您不能使用Elastic Beanstalk URL进行连接。
您可以在EC2控制台中查找实例IP地址。
您还需要确保端口22已打开。默认情况下,EB CLI在ssh连接完成后关闭端口22。您可以调用eb ssh -o以在ssh会话完成后保持端口打开。
警告:您应该知道,Elastic Beanstalk随时可能替换您的实例。任何Elastic Beanstalk实例上的状态都无法保证。最好仅将ssh用于测试和调试目的,因为您修改的任何内容都可能随时消失。
eb ssh
。 - Sharoon Thomas