设置以使用 Amazon EC2 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

设置以使用 Amazon EC2

完成本部分中的任务,以便为首次启动 Amazon EC2 实例进行设置:

完成后,您将准备好学习 Amazon EC2 入门教程。

注册 Amazon Web Services 账户

如果您没有Amazon Web Services 账户,请完成以下步骤来创建一个。

要注册Amazon Web Services 账户
  1. 打开 https://portal.aws.amazon.com/billing/signup

  2. 按照屏幕上的说明进行操作。

    在注册时,将接到一通电话,要求使用电话键盘输入一个验证码。

    注册Amazon Web Services 账户时,系统将会创建Amazon Web Services 账户根用户。根用户有权访问该账户中的所有Amazon Web Services和资源。作为一种安全最佳实践,请为管理用户分配管理访问权限,并且只使用根用户执行需要根用户访问权限的任务

Amazon注册过程完成后,会发送一封确认电子邮件。在任何时候,您都可以通过转至 https://aws.amazon.com/ 并选择 My Account(我的账户) 来查看当前的账户活动并管理您的账户。

保护 IAM 用户

注册Amazon Web Services 账户后,启用多重身份验证(MFA)保护管理用户。有关说明,请参阅 IAM 用户指南 中的 为 IAM 用户启用虚拟 MFA 设备(控制台)

要授予其他用户访问Amazon Web Services 账户资源的权限,请创建 IAM 用户。为了保护 IAM 用户,请启用 MFA 并仅向 IAM 用户授予执行任务所需的权限。

有关创建和保护 IAM 用户的更多信息,请参阅《IAM 用户指南》中的以下主题:

创建密钥对

Amazon 使用公有密钥密码术来保护实例的登录信息。Linux 实例没有密码;您可以使用密钥对安全地登录您的实例。在启动实例时指定密钥对的名称,然后在使用 SSH 登录时提供私有密钥,

如果您尚未创建密钥对,则可以通过 Amazon EC2 控制台自行创建。请注意,如果您计划在多个 Amazon Web Services 区域中启动实例,则需要在每个区域中创建密钥对。有关 区域的更多信息,请参阅区域和可用区

创建密钥对
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Key Pairs (密钥对)

  3. 选择 Create key pair (创建密钥对)

  4. 对于 Name (名称),为模板输入一个描述性名称。Amazon EC2 将公有密钥与您指定的密钥名称相关联。密钥名称最多可包含 255 个 ASCII 字符。它不能包含前导空格或尾随空格。

  5. 对于 Key pair type(密钥对类型),选择 RSA 或者 ED25519。请注意,Windows 实例不支持 ED25519 密钥。

  6. 对于 Private key file format(私有密钥文件格式),选择要保存私有密钥的格式。要以可与 OpenSSH 一起使用的格式保存私有密钥,请选择 pem。要以可与 PuTTY 一起使用的格式保存私有密钥,请选择 ppk

  7. 选择 Create key pair (创建密钥对)

  8. 您的浏览器会自动下载私有密钥文件。基本文件名是指定为密钥对名称的名称,文件扩展名由您选择的文件格式确定。将私有密钥文件保存在安全位置。

    重要

    这是您保存私有密钥文件的唯一机会。

  9. 如果您计划在 macOS 或 Linux 计算机上使用 SSH 客户端连接到 Linux 实例,请使用以下命令设置私有密钥文件的权限,以确保只有您可以读取该文件。

    chmod 400 key-pair-name.pem

    如果不设置这些权限,则无法使用此密钥对连接到实例。有关更多信息,请参阅错误:未保护的私有密钥文件

有关更多信息,请参阅Amazon EC2 密钥对和 Linux 实例

创建安全组

安全组用作相关实例的防火墙,可在实例级别控制入站和出站的数据流。您必须在安全组中添加规则,以便能够使用 SSH 从您的 IP 地址连接到实例。您还可以添加允许来自任意位置的入站和出站 HTTP 和 HTTPS 访问的规则。

请注意,如果您计划在多个 Amazon Web Services 区域 中启动实例,则需要在每个区域中创建安全组。有关 区域的更多信息,请参阅区域和可用区

先决条件

您需要使用本地计算机的公有 IPv4 地址。Amazon EC2 控制台中的安全组编辑器可以为您自动检测公有 IPv4 地址。此外,您可以在 Internet 浏览器中使用搜索短语“什么是我的 IP 地址”,或使用以下服务:检查 IP。如果您正通过 Internet 服务提供商 (ISP) 连接或者在不使用静态 IP 的情况下从防火墙后面连接,则您需要找出客户端计算机使用的 IP 地址范围。

您可以使用以下方法之一创建自定义安全组。

Console
创建具有最小特权的安全组
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 从顶部的导航栏中选择安全组的 Amazon Web Services 区域。安全组特定于某一区域,因此您应选择已创建密钥对的区域。

  3. 在左侧导航窗格中,选择安全组

  4. 选择创建安全组

  5. 对于 Basic details (基本详细信息),执行以下操作:

    1. 输入新安全组的名称和描述。使用一个容易记住的名称,例如,您的用户名称,后跟 _SG_,加区域名称。例如,me_SG_uswest2

    2. VPC 列表中,为区域选择您的默认 VPC。

  6. 对于 Inbound rules (入站规则),创建允许传输到您的实例的规则。例如,对于接受 HTTP 和 HTTPS 流量的 Web 服务器,请使用以下规则。有关更多示例,请参阅 针对不同使用案例的安全组规则

    1. 选择 添加规则。对于类型,选择 HTTP。对于来源,选择 Anywhere-IPv4 以允许来自任何 IPv4 地址的入站 HTTP 流量,或者选择 Anywhere-IPv6 以允许来自任何 IPv6 地址的入站 HTTP 流量。

    2. 选择 添加规则。对于类型,选择 HTTPS。对于来源,选择 Anywhere-IPv4 以允许来自任何 IPv4 地址的入站 HTTPS 流量,或者选择 Anywhere-IPv6 以允许来自任何 IPv6 地址的入站 HTTPS 流量。

    3. 选择 Add rule (添加规则)。对于 Type (类型),选择 SSH。对于 Source (源),执行以下操作之一:

      • 选择 My IP (我的 IP):自动添加本地计算机的公有 IPv4 地址。

      • 选择 Custom (自定义) 并使用 CIDR 表示法指定计算机的公有 IPv4 地址或网络。要采用 CIDR 表示法指定单个 IP 地址,请添加路由前缀 /32,例如 203.0.113.25/32。如果您的公司或路由器要分配同一范围内的地址,请指定整个范围,例如 203.0.113.0/24

      警告

      出于安全原因,请勿为具有 SSH 规则的来源选择 Anywhere-IPv4Anywhere-IPv6。这会允许从互联网上的所有 IP 地址访问您的实例。这在测试环境中可以接受一小段时间,但是在生产环境中并不安全。

  7. 对于 Outbound rules (出站规则),请保留允许所有出站流量的默认规则。

  8. 选择创建安全组

Amazon CLI

当您使用 Amazon CLI 创建安全组时,将向安全组自动添加允许所有出站流量的出站规则。入站规则不会自动添加;需要您手动添加。

在此过程中,您将组合使用 create-security-groupauthorize-security-group-ingress Amazon CLI 命令来创建安全组,并添加允许指定入站流量的入站规则。单独运行命令可替代以下过程,即先创建安全组,然后向安全组添加入站规则。

创建安全组并向安全组添加入站规则

按照如下所示使用 create-security-groupauthorize-security-group-ingress Amazon CLI 命令:

aws ec2 authorize-security-group-ingress \ --region us-west-2 \ --group-id $(aws ec2 create-security-group \ --group-name myname_SG_uswest2 \ --description "Security group description" \ --vpc-id vpc-12345678 \ --output text \ --region us-west-2) \ --ip-permissions \ IpProtocol=tcp,FromPort=80,ToPort=80,IpRanges='[{CidrIp=0.0.0.0/0,Description="HTTP from anywhere"}]' \ IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges='[{CidrIp=0.0.0.0/0,Description="HTTPS from anywhere"}]' \ IpProtocol=tcp,FromPort=22,ToPort=22,IpRanges='[{CidrIp=172.31.0.0/16,Description="SSH from private network"}]' \ IpProtocol=tcp,FromPort=22,ToPort=22,IpRanges='[{CidrIp=203.0.113.25/32,Description="SSH from public IP"}]'

对于:

  • --region:指定要在其中创建入站规则的区域。

  • --group-id:指定用于创建安全组的 create-security-group 命令和以下参数:

    • --group-name:指定新安全组的名称。使用一个容易记住的名称(如您的用户名)后跟 _SG_ 加区域名称。例如,myname_SG_uswest2

    • --description:指定有助于了解安全组允许的流量的描述。

    • --vpc-id:指定该区域的默认 VPC。

    • --output:指定 text 作为命令的输出格式。

    • --region:指定要在其中创建安全组的区域。该区域应与您为入站规则指定的区域相同。

  • --ip-permissions:指定要添加到安全组的入站规则。本示例中的规则适用于 Web 服务器,该服务器接受来自任何地方的 HTTP 和 HTTPS 流量,并接受来自专用网络(如果您的公司或路由器从某个范围分配地址)以及指定公有 IP 地址(例如采用 CIDR 表示法的计算机或网络的公有 IPv4 地址)的 SSH 流量。

    警告

    出于安全原因,请勿使用 SSH 规则为 CidrIp 指定 0.0.0.0/0。这会允许从互联网上的所有 IP 地址访问您的实例。这在测试环境中可以接受一小段时间,但是在生产环境中并不安全。

PowerShell

当您使用 Amazon Tools for Windows PowerShell 创建安全组时,将向安全组自动添加允许所有出站流量的出站规则。入站规则不会自动添加;需要您手动添加。

在此过程中,您将组合使用 New-EC2SecurityGroupGrant-EC2SecurityGroupIngress Amazon Tools for Windows PowerShell 命令来创建安全组,并添加允许指定入站流量的入站规则。单独运行命令可替代以下过程,即先创建安全组,然后向安全组添加入站规则。

创建安全组

按照如下所示使用 New-EC2SecurityGroupGrant-EC2SecurityGroupIngress Amazon Tools for Windows PowerShell 命令。

Import-Module AWS.Tools.EC2 New-EC2SecurityGroup -GroupName myname_SG_uswest2 -Description 'Security group description' -VpcId vpc-12345678 -Region us-west-2 | ` Grant-EC2SecurityGroupIngress ` -GroupName $_ ` -Region us-west-2 ` -IpPermission @( (New-Object -TypeName Amazon.EC2.Model.IpPermission -Property @{ IpProtocol = 'tcp'; FromPort = 80; ToPort = 80; Ipv4Ranges = @(@{CidrIp = '0.0.0.0/0'; Description = 'HTTP from anywhere'}) }), (New-Object -TypeName Amazon.EC2.Model.IpPermission -Property @{ IpProtocol = 'tcp'; FromPort = 443; ToPort = 443; Ipv4Ranges = @(@{CidrIp = '0.0.0.0/0'; Description = 'HTTPS from anywhere'}) }), (New-Object -TypeName Amazon.EC2.Model.IpPermission -Property @{ IpProtocol = 'tcp'; FromPort = 3389; ToPort = 3389; Ipv4Ranges = @( @{CidrIp = '172.31.0.0/16'; Description = 'RDP from private network'}, @{CidrIp = '203.0.113.25/32'; Description = 'RDP from public IP'} ) }) )

对于安全组:

  • -GroupName:指定新安全组的名称。使用一个容易记住的名称(如您的用户名)后跟 _SG_ 加区域名称。例如,myname_SG_uswest2

  • -Description:指定有助于了解安全组允许的流量的描述。

  • -VpcId:指定该区域的默认 VPC。

  • -Region:指定要在其中创建安全组的区域。

对于入站规则:

  • -GroupName:指定 $_ 以引用您正在创建的安全组。

  • -Region:指定要在其中创建入站规则的区域。该区域应与您为安全组指定的区域相同。

  • -IpPermission:指定要添加到安全组的入站规则。本示例中的规则适用于 Web 服务器,该服务器接受来自任何地方的 HTTP 和 HTTPS 流量,并接受来自专用网络(如果您的公司或路由器从某个范围分配地址)以及指定公有 IP 地址(例如采用 CIDR 表示法的计算机或网络的公有 IPv4 地址)的 RDP 流量。

    警告

    出于安全原因,请勿使用 RDP 规则为 CidrIp 指定 0.0.0.0/0。这会允许从互联网上的所有 IP 地址访问您的实例。这在测试环境中可以接受一小段时间,但是在生产环境中并不安全。

有关更多信息,请参阅 适用于 Linux 实例的 Amazon EC2 安全组