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


当前回答

不要将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密钥对

其他回答

Elastic beanstalk CLI v3现在支持直接SSH命令eb 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

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

根据您的环境配置,在为您的环境创建的EC2实例上可能没有公共IP地址。你可以通过以下方法查看:

转到EC2控制台 找到实例并检查Description选项卡 如果没有公共IP…… 在导航中单击“弹性IPs” 单击“分配新地址” 选择亚马逊的泳池 点击分配

最后,选择您的新EIP并从操作菜单中选择关联地址。将该IP与EC2实例关联。您现在应该能够使用eb ssh连接。

可以通过执行eb ssh——setup命令重置连接详细信息。

如果您正在使用elastic bean和EB CLI,只需使用EB ssh登录到实例。您可以使用下列链接中指定的选项 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-ssh.html

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的主要作者。