我刚刚注册了亚马逊的Elastic Beanstalk新产品。我不明白的是如何SSH到Beanstalk实例。我没有私钥,因为Beanstalk代表我生成了实例。


当前回答

Elastic Beanstalk可以将单个EC2对绑定到实例概要文件。让多个用户ssh进入EBS的手动解决方案是在authorized_keys文件中添加他们的公钥。

其他回答

不要将ssh密钥添加到elastic beanstalk

正如其他人指出的那样,现在可以使用elastic beanstalk cli eb ssh连接到ec2实例。

如果你不能使用eb cli,而是使用awscli,或者来这里寻找一种简单的方法来ssh到任何ec2实例而不需要主密钥对,你也可以使用awscli aws ec2-instance-connect,如这里所述。

注意,cli方法要求您修改安全策略以允许ssh连接,而eb为您处理这两个问题。

这两种方法都需要一个带有EC2实例连接的AMI,这是目前的默认情况,比直接关联密钥更可取,因为您可以允许多个用户以这种方式连接,密钥只添加了很短的时间,您不需要预先考虑它,并且您可以通过IAM保持集中控制权限。如果密钥持有者离开团队,则不需要额外移除。 一般来说,我建议现在不要在ec2上设置ssh密钥对

如果您已经使用eb init设置了您的环境的CLI,那么它应该是 简单

Eb SSH -设置,它将允许您创建一个新的密钥对或使用一个现有的(如果存在的话)。

您还可以使用eb连接到现有的环境,尽管我还没有这样做。

安装CLI的详细信息- https://docs.aws.amazon.com/console/elasticbeanstalk/eb-cli-install

在EC2实例的“实例操作”菜单中有一个方便的“连接”选项。它将为您提供使用实例的正确url执行的确切SSH命令。杰布利的全部指示都是正确的。

Amazon发布了一种通过SSM (Simple Systems Manager) SSH到实例的更好方法。SSM中的会话管理器工具允许您仅使用AWS API密钥进行SSH。它比常规的SSH更好,因为:

不需要开22端口。 它保存SSH会话的日志。 它不需要共享SSH密钥。凭证绑定到IAM用户,就像他们应该做的那样。 它适用于没有公共IP地址且位于私有子网中的实例。

设置您的Elastic Beanstalk环境以允许通过AWS SSM进行SSH

以下步骤需要对每个环境执行一次。

进入Elastic Beanstalk > ENVIRONEMNT_NAME > Configuration > Security目录,找到“IAM实例配置文件”(默认为“aws-elasticbeanstalk-ec2-role”)。这是步骤2中的ROLE_NAME。 进入IAM > Roles > ROLE_NAME。在权限下,添加“AmazonSSMManagedInstanceCore”。 进入“系统管理>会话管理>首选项>编辑”。启用“以支持方式运行”,并将“以默认用户方式运行”设置为“ec2-user”(或者您的Elastic Beanstalk服务器的任何默认用户)。

注意,传播IAM更改可能需要一段时间(~10分钟)。如果您已经完成AWS设置,并得到“TargetNotConnected”错误,请等待10-15分钟后再试一次。

SSH与AWS SSM

设置好这些后,你现在有三个选项来SSH到你的实例:

通过AWS web控制台。进入“AWS系统管理器>会话管理器>开始会话”。选择您想要SSH进入的机器。这将在浏览器中启动SSH终端。 使用AWS CLI。请参阅下面“AWS CLI设置”的说明。 使用eb-ssm。EB -ssm是一个命令行工具,是EB CLI命令EB ssh的直接替代品。它通过封装AWS CLI和装载EB CLI配置来实现这一点。请注意,eb-ssm还需要下面的“AWS CLI设置”步骤

AWS CLI设置

如果您希望从您的终端使用AWS CLI或eb-ssm进行SSH,请执行以下步骤。这些步骤需要在每台计算机上执行一次。

安装AWS命令行:https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html 安装会话管理器插件:https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html


免责声明:我是eb-ssm的主要作者。

Elastic Beanstalk可以将单个EC2对绑定到实例概要文件。让多个用户ssh进入EBS的手动解决方案是在authorized_keys文件中添加他们的公钥。