我刚刚注册了亚马逊的Elastic Beanstalk新产品。我不明白的是如何SSH到Beanstalk实例。我没有私钥,因为Beanstalk代表我生成了实例。
我也一直在玩这个。
该服务将重新启动,所以煮5分钟咖啡
我发现这是一个两步的过程。这假设您已经设置了一个访问相关区域中的EC2实例的密钥对。
在AWS控制台中,打开EC2选项卡。
选择相应的区域,单击“安全组”。
elasticbeanstalk-default
编辑安全组,增加SSH访问规则。下面将锁定它,只允许从特定的IP地址进入。
SSH | tcp | 22 | 22 | 192.168.1.1/32
Existing Key Pair
如果在这些步骤之后,您看到“运行状况”设置为“已降级”
这是正常的,这只是意味着EC2实例正在更新。等几秒钟就会好的
实例重新启动后,需要从AWS Console EC2实例选项卡或通过API获取主机名。然后您应该能够ssh到服务器上。
$ ssh -i path/to/keypair.pub ec2-user@ec2-an-ip-address.compute-1.amazonaws.com
注意:要向环境配置中添加一个keypair,实例的终止保护必须关闭,因为Beanstalk将尝试终止当前实例并使用keypair启动新实例。
注意:如果某些东西不工作,检查&;事件&;在Beanstalk应用程序/环境中打开标签,找出出错的地方。
在EC2实例的“实例操作”菜单中有一个方便的“连接”选项。它将为您提供使用实例的正确url执行的确切SSH命令。杰布利的全部指示都是正确的。
我在2013年8月使用linux客户端和简单的AWS Beanstalk安装(单个EC2实例)的经验如下(基于上面的Community Wiki)
awsweb...
祝你好运
不久前我也遇到了同样的问题。我想使用密钥文件,但是Amazon在某个地方说不能向现有的EC2服务器添加密钥文件。对于第一个Beanstalk应用程序,Amazon为您预配置了应用程序。您需要创建一个新的应用程序,您可以配置运行Beanstalk应用程序的EC2服务器使用旧的pem文件(如果使用Putty则为ppk),或者您也可以创建一个新的pem文件。现在您应该能够SSH了。
然后配置,然后删除你的旧应用。
1)在“AWS仪表板”中,选择“ElasticBeanstalk”服务 2)选择要使用的应用程序。 3)选择“配置” 4)在“实例”配置框中选择齿轮(设置)图标。 5)这将带你到一个名为“服务器”的页面,在那里你可以更新“EC2密钥对”下拉字段与你想要的密钥对,并选择“保存”
需要注意的一点是,这可能不适用于具有多个实例的应用程序(但我认为,如果它们都与密钥对位于同一区域,则可能如此)。
Elastic beanstalk CLI v3现在支持直接SSH命令eb ssh。如。
eb ssh
eb ssh your-environment-name
不需要设置安全组来查找EC2实例地址。
还有一个很酷的技巧:
eb ssh --force
这将临时强制端口22开放为0.0.0.0,并保持它开放,直到exit。这混合了顶部答案的有点的好处,没有麻烦。您可以临时授予除您之外的其他人调试和诸如此类的访问权限。当然,您仍然需要将他们的公钥上传到主机,以便他们能够访问。一旦你这样做了(只要你在eb ssh中),其他人就可以
exit
ssh ec2-user@ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com
您需要使用ec2实例的公共ip地址直接连接到它。您无法使用elasticbeanstalk url进行连接。
可以通过在ec2控制台中查找实例ip地址。
您还需要确保端口22是开放的。默认情况下,ssh连接完成后,EB CLI会关闭22端口。您可以调用eb ssh -o在ssh会话完成后保持端口开放。
警告:你应该知道弹性豆茎可以在任何时候替换你的实例。在任何弹性豆茎实例上都不能保证状态。最好只将ssh用于测试和调试,因为您所修改的任何内容都可能随时消失。
以上答案有点陈旧。
首先创建一个密钥对,然后将其附加到Elastic Beanstalk环境。
创建密钥对的步骤
将创建的密钥对附加到Elastic Beanstalk环境的步骤
AWS ->服务->弹性豆茎
选择您的环境并单击左侧的配置。
在“配置概览”中选择“安全性”中的“修改”。
在“虚拟机权限”下选择我们创建的密钥对。
单击“保存”,然后单击“保存配置”。
这将花费一些时间反映到您的EC2实例。
我来这里是为了寻找一种方法,在配置期间向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进入该盒子。
根据您的环境配置,在为您的环境创建的EC2实例上可能没有公共IP地址。你可以通过以下方法查看:
最后,选择您的新EIP并从操作菜单中选择联系地址。将该IP与EC2实例关联。现在你应该可以使用eb ssh进行连接了。
你可以通过运行eb ssh --setup来重置连接细节。
eb ssh --setup
eb init
eb ssh --setup,它将允许你创建一个新的密钥对,或者如果存在的话使用一个现有的密钥对。
你也可以用eb use连接到现有的环境,尽管我还没有这样做。
eb use
关于安装CLI的详细信息- https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install . exe
在mac上,你可以使用brew安装命令行:
brew install awsebcli
使用命令行工具,您可以ssh:
eb ssh environment-name
也可以做其他的运算。这假设您已经添加了一个允许从您的ip进行ssh的安全组。
Elastic Beanstalk可以将单个EC2对绑定到实例概要文件。让多个用户ssh进入EBS的手动解决方案是在authorized_keys文件中添加他们的公钥。
不要将ssh密钥添加到elastic beanstalk
正如其他人指出的那样,现在,您可以使用弹性beanstalk cli eb ssh连接到您的ec2实例。
如果你不能使用eb cli,而是使用awscli,或者来这里寻找一种简单的方法来ssh到任何ec2实例而不需要主密钥对,你也可以使用awscli aws ec2-instance-connect,如所述在这里。
aws ec2-instance-connect
注意,cli方法要求您修改安全策略以允许ssh连接,而eb为您处理这两个问题。
Amazon发布了一种通过SSM (Simple Systems Manager) SSH到实例的更好方法。SSM中的会话管理器工具允许您仅使用AWS API密钥进行SSH。它比常规的SSH更好,因为:
以下步骤需要对每个环境执行一次。
去弹性豆茎>ENVIRONEMNT_NAME祝辞配置比;安全性和查找“IAM实例概要文件”;(默认情况下,这是“aws-elasticbeanstalk-ec2-role”)。这是步骤2中的ROLE_NAME。
去IAM >角色在ROLE_NAME。在权限下,添加“AmazonSSMManagedInstanceCore"”。
去系统经理>会话管理器>偏好比;编辑。启用“作为支持运行”;并设置“以默认用户运行”;“ec2-user”;(或者您的Elastic Beanstalk服务器的默认用户)。
注意,传播IAM更改可能需要一段时间(~10分钟)。如果您已经完成AWS设置,并获得“targetnotconnected”;错误,请等待10-15分钟后重试。
设置好这些后,你现在有三个选项来SSH到你的实例:
通过AWS web控制台。访问AWS Systems Manager >会话管理器>开始会议。选择您想要SSH进入的机器。这将在浏览器中启动SSH终端。
使用AWS命令行。参见“AWS CLI设置”的说明;在下面。
如果您希望从您的终端使用AWS CLI或eb-ssm进行SSH,请执行以下步骤。这些步骤需要在每台计算机上执行一次。
安装AWS命令行:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
免责声明:我是eb-ssm的主要作者。