

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 示例：使用堡垒主机启动 VPC 中的 Elastic Beanstalk 应用程序
<a name="vpc-bastion-host"></a>

本节介绍如何使用堡垒主机在 VPC 内部署 Elastic Beanstalk 应用程序以及为什么要实现此拓扑。

如果您的 Amazon EC2 实例位于私有子网内，则您将无法远程连接到它们。要连接到实例，您可以在公有子网中设置堡垒服务器以作为代理。例如，您可以在公有子网中设置 SSH 端口转发器或 RDP 网关，以代理从您自己的网络流向数据库服务器的数据流。本节提供有关如何创建包含私有和公有子网的 VPC 的示例。实例位于私有子网内，而堡垒主机、NAT 网关和负载均衡器位于公有子网内。您的基础设施与下图类似。

![\[使用堡垒主机的 Elastic Beanstalk 和 VPC 拓扑图。\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/aeb-vpc-bastion-topo-ngw.png)


要使用堡垒主机在 VPC 内部署 Elastic Beanstalk 应用程序，请完成以下小节中描述的步骤。

**Topics**
+ [创建带有公有子网和私有子网的 VPC](#vpc-bastion-host-create)
+ [创建和配置堡垒主机安全组](#vpc-bastion-create-host-sg)
+ [更新实例安全组](#vpc-bastion-update-instance-sg)
+ [创建堡垒主机](#vpc-bastion-host-launch)

## 创建带有公有子网和私有子网的 VPC
<a name="vpc-bastion-host-create"></a>

完成[公有/私有 VPC](vpc.md#services-vpc-privatepublic)中的所有过程。部署应用程序时，必须为实例指定 Amazon EC2 key pair，这样您就可以远程连接到它们。有关如何指定实例键对的更多信息，请参阅[你的 Elastic Beanstalk 环境的亚马逊 EC2 实例](using-features.managing.ec2.md)。

## 创建和配置堡垒主机安全组
<a name="vpc-bastion-create-host-sg"></a>

为堡垒主机创建安全组，并添加规则，允许来自互联网的入站 SSH 流量以及到包含 Amazon EC2 实例的私有子网的出站 SSH 流量。

**创建堡垒主机安全组**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在导航窗格中，选择 **Security Groups**（安全组）。

1. 选择**创建安全组**。

1. 在 **Create Security Group (创建安全组)** 对话框中，输入以下内容并选择 **Yes, Create (是，创建)**。  
**Name tag (名称标签)**（可选）  
输入安全组的名称标签。  
**组名**  
输入安全组的名称。  
**描述**  
输入安全组的描述。  
**VPC**  
选择您的 VPC。

   此时将创建安全组并在 **Security Groups (安全组)** 页上显示它。请注意，它具有 ID（例如，`sg-xxxxxxxx`）。您可能必须通过单击该页面右上角的**显示/隐藏**来启用**组 ID** 列。

**配置堡垒主机安全组**

1. 在安全组列表中，选中刚才为堡垒主机创建的安全组的复选框。

1. 在 **Inbound Rules** 选项卡上，选择 **Edit**。

1. 如果需要，请选择 **Add another rule (再添加一条规则)**。

1. 如果堡垒主机是 Linux 实例，请选择 **Type (类型)** 下的 **SSH**。

   如果堡垒主机是 Windows 实例，请选择 **Type (类型)** 下的 **RDP**。

1. 在 **Source (源)** 字段中输入所需的源 CIDR 范围，然后选择 **Save (保存)**。  
![\[堡垒主机安全组\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/vpc-bh-sg-inbound.png)

1. 在 **Outbound Rules (出站规则)** 选项卡上，选择 **Edit (编辑)**。

1. 如果需要，请选择 **Add another rule (再添加一条规则)**。

1. 在 **Type (类型)** 下，选择为入站规则指定的类型。

1. 在 **Source (源)** 字段中，输入主机的子网在 VPC 的私有子网中的 CIDR 范围。

   要查找它：

   1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

   1. 在导航窗格中，选择 **Subnets**(子网)。

   1. 注意 **IPv4 CIDR** 下每个**可用区的**值，您希望堡垒主机桥接到该可用区的主机。
**注意**  
如果您在多个可用区中有主机，请为每个可用区创建一个出站规则。  
![\[VPC 子网\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/vpc-subnets.png)

1. 选择**保存**。

## 更新实例安全组
<a name="vpc-bastion-update-instance-sg"></a>

默认情况下，您为实例创建的安全组不允许传入流量。尽管 Elastic Beanstalk 会修改实例的默认组来允许 SSH 流量时，但如果您的实例是 Windows 实例，您必须修改自定义实例安全组来允许 RDP 流量。

**更新 RDP 的实例安全组**

1. 在安全组的列表中，选中实例安全组的复选框。

1. 在 **Inbound (入站)** 选项卡上，选择 **Edit (编辑)**。

1. 如果需要，请选择 **Add another rule (再添加一条规则)**。

1. 输入下列值并选择 **Save (保存)**。  
**Type**  
`RDP`  
**协议**  
`TCP`  
**端口范围**  
`3389`  
**源**  
输入堡垒主机安全组的 ID（例如，`sg-8a6f71e8`）并选择 **Save (保存)**。

## 创建堡垒主机
<a name="vpc-bastion-host-launch"></a>

要创建堡垒主机，您需要在公有子网中启动一个 Amazon EC2 实例，该实例将充当堡垒主机。

有关在私有子网中为 Windows 实例设置堡垒主机的更多信息，请参阅[使用堡垒服务器控制对 EC2 实例的网络访问](https://aws.amazon.com/blogs/security/controlling-network-access-to-ec2-instances-using-a-bastion-server/)。

有关在私有子网中设置适用于 Linux 实例的堡垒主机的更多信息，请参阅[安全地连接到在私有 Amazon VPC 中运行的 Linux 实例](https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/)。