Amazon Elastic Compute Cloud
Linux 实例用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 SSH 连接到 Linux 实例

启动您的实例之后,您可以连接到该实例,然后像使用您面前的计算机一样来使用它。

注意

启动实例后,需要几分钟准备好实例,以便您能连接到实例。检查您的实例是否通过了状态检查。您可以在 Instances 页上的 Status Checks 列中查看此信息。

以下说明介绍如何使用 SSH 客户端连接到您的实例。如果您在尝试连接到您的实例时收到错误消息,请参阅排查实例的连接问题

先决条件

在连接到 Linux 实例之前,请先完成以下先决条件:

  • 安装 SSH 客户端

    默认情况下,您的 Linux 计算机最可能包括 SSH 客户端。您可以通过在命令行键入 ssh 来检查 SSH 客户端。如果您的计算机不能识别该命令,OpenSSH 项目提供了整套 SSH 工具免费使用的功能。有关更多信息,请参阅 http://www.openssh.com

  • 安装 AWS CLI 工具

    (可选)如果您使用的是来自第三方的公用 AMI,请使用命令行工具验证指纹。有关安装 AWS CLI 的更多信息,请参阅 AWS Command Line Interface 用户指南 中的开始设置

  • 获得实例的 ID

    您可以通过使用 Amazon EC2 控制台(位于 Instance ID (实例 ID) 列中)获得您的实例的 ID。如果您愿意,您可以使用 describe-instances (AWS CLI) 或 Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具) 命令。

  • 获得实例的公有 DNS 名称

    您可以使用 Amazon EC2 控制台获取实例的公有 DNS (选中 Public DNS (IPv4) 列;如果此列处于隐藏状态,请选择 Show/Hide 图标并选择 Public DNS (IPv4))。如果您愿意,您可以使用 describe-instances (AWS CLI) 或 Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具) 命令。

  • (仅限 IPv6) 获取实例的 IPv6 地址

    如果您已将 IPv6 地址分配给您的实例,则可选择使用实例的 IPv6 地址而非公共 IPv4 地址或公共 IPv4 DNS 主机名来连接实例。您的本地计算机必须拥有 IPv6 地址,且必须配置为使用 IPv6。可使用 Amazon EC2 控制台 (选中 IPv6 IPs 字段) 获取实例的 IPv6 地址。如果您愿意,您可以使用 describe-instances (AWS CLI) 或 Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具) 命令。有关 IPv6 的更多信息,请参阅IPv6 地址

  • 查找私有密钥

    获取您在启动实例时指定的密钥对的 .pem 文件在您电脑上位置的完全限定路径。

  • 获取用于启动实例的 AMI 的默认用户名称

    • 对于 Amazon Linux 2 或 Amazon Linux AMI,用户名称是 ec2-user

    • 对于 Centos AMI,用户名称是 centos

    • 对于 Debian AMI,用户名称是 adminroot

    • 对于 Fedora AMI,用户名为 ec2-userfedora

    • 对于 RHEL AMI,用户名称是 ec2-userroot

    • 对于 SUSE AMI,用户名称是 ec2-userroot

    • 对于 Ubuntu AMI,用户名称是 ubuntu

    • 另外,如果 ec2-userroot 无法使用,请与 AMI 供应商核实。

  • 允许从您的 IP 地址到您的实例的入站 SSH 流量

    确保与您的实例关联的安全组允许来自您的 IP 地址的传入 SSH 流量。默认情况下,默认安全组不允许传入 SSH 流量。有关更多信息,请参阅 为您的 Linux 实例授权入站流量

连接到 Linux 实例

通过以下过程使用 SSH 客户端连接到您的 Linux 实例。如果您在尝试连接到您的实例时收到错误消息,请参阅排查实例的连接问题

使用 SSH 连接到您的实例

  1. (可选) 您可以在本地系统 (而不是实例) 上使用以下命令之一验证正在运行的实例上的 RSA 密钥指纹。如果您从第三方的公用 AMI 启动了实例,则可能需要这样做。找到 SSH HOST KEY FINGERPRINTS 部分,记下 RSA 指纹 (例如 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f) 并将它与实例的指纹进行比较。

    确保实例处于 running 状态,而不是 pending 状态。SSH HOST KEY FINGERPRINTS 部分仅在实例首次启动之后可用。

  2. 在命令行 shell 中,将目录更改为您在启动实例时创建的私有密钥文件的位置。

  3. 使用 chmod 命令确保您的私有密钥文件不是公开可见的。例如,如果您的私有密钥文件的名称是 my-key-pair.pem,请使用以下命令:

    chmod 400 /path/my-key-pair.pem
  4. 使用 ssh 命令连接到实例。您将指定私有密钥 (.pem) 文件和 user_name@public_dns_name。例如,如果您使用了 Amazon Linux AMI,则用户名为 ec2-user

    ssh -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com.cn

    您会看到如下响应。

    The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com.cn (10.254.142.33)' can't be established. RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f. Are you sure you want to continue connecting (yes/no)?
  5. (仅限 IPv6) 或者,您可以使用 IPv6 地址连接到实例。请在 ssh 命令中指定私有密钥 (.pem) 文件路径、适当的用户名和 IPv6 地址。例如,如果您使用了 Amazon Linux AMI,则用户名为 ec2-user

    ssh -i /path/my-key-pair.pem ec2-user@2001:db8:1234:1a00:9691:9503:25ad:1761
  6. (可选) 验证安全警报中的指纹是否与在步骤 1 中获取的指纹匹配。如果这些指纹不匹配,则表示有人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。

  7. 输入 yes

    您会看到如下响应。

    Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com.cn' (RSA) to the list of known hosts.

使用 SCP 将文件从 Linux 传输到 Linux 实例

在您的本地计算机与 Linux 实例之间传输文件的一种方法是使用安全复制 (SCP)。本节介绍了如何使用 SCP 传输文件。该步骤与使用 SSH 连接到实例的步骤类似。

先决条件

  • 安装 SCP 客户端

    默认情况下,大多数 Linux、Unix 和 Apple 计算机都包含 SCP 客户端。如果您的计算机不含 SSH 客户端,OpenSSH 项目提供了整套 SSH 工具免费使用的功能,包括 SCP 客户端。有关更多信息,请转至 http://www.openssh.org

  • 获得实例的 ID

    您可以通过使用 Amazon EC2 控制台(位于 Instance ID (实例 ID) 列中)获得您的实例的 ID。如果您愿意,您可以使用 describe-instances (AWS CLI) 或 Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具) 命令。

  • 获得实例的公有 DNS 名称

    您可以使用 Amazon EC2 控制台获取实例的公有 DNS (选中 Public DNS (IPv4) 列;如果此列处于隐藏状态,请选择 Show/Hide 图标并选择 Public DNS (IPv4))。如果您愿意,您可以使用 describe-instances (AWS CLI) 或 Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具) 命令。

  • (仅限 IPv6) 获取实例的 IPv6 地址

    如果您已将 IPv6 地址分配给您的实例,则可选择使用实例的 IPv6 地址而非公共 IPv4 地址或公共 IPv4 DNS 主机名来连接实例。您的本地计算机必须拥有 IPv6 地址,且必须配置为使用 IPv6。可使用 Amazon EC2 控制台 (选中 IPv6 IPs 字段) 获取实例的 IPv6 地址。如果您愿意,您可以使用 describe-instances (AWS CLI) 或 Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具) 命令。有关 IPv6 的更多信息,请参阅IPv6 地址

  • 查找私有密钥

    获取您在启动实例时指定的密钥对的 .pem 文件在您电脑上位置的完全限定路径。

  • 获取用于启动实例的 AMI 的默认用户名称

    • 对于 Amazon Linux 2 或 Amazon Linux AMI,用户名称是 ec2-user

    • 对于 Centos AMI,用户名称是 centos

    • 对于 Debian AMI,用户名称是 adminroot

    • 对于 Fedora AMI,用户名为 ec2-userfedora

    • 对于 RHEL AMI,用户名称是 ec2-userroot

    • 对于 SUSE AMI,用户名称是 ec2-userroot

    • 对于 Ubuntu AMI,用户名称是 ubuntu

    • 另外,如果 ec2-userroot 无法使用,请与 AMI 供应商核实。

  • 允许从您的 IP 地址到您的实例的入站 SSH 流量

    确保与您的实例关联的安全组允许来自您的 IP 地址的传入 SSH 流量。默认情况下,默认安全组不允许传入 SSH 流量。有关更多信息,请参阅 为您的 Linux 实例授权入站流量

以下步骤将引导您使用 SCP 来传输文件。如果您已经使用 SSH 连接到实例,且已确认实例指纹,您可以从包含 SCP 命令的步骤 (步骤 4) 开始。

使用 SCP 来传输文件

  1. (可选) 您可以在本地系统 (而不是实例) 上使用以下命令之一验证实例上的 RSA 密钥指纹。如果您从第三方的公用 AMI 启动了实例,则可能需要这样做。找到 SSH HOST KEY FINGERPRINTS 部分,记下 RSA 指纹 (例如 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f) 并将它与实例的指纹进行比较。

    SSH HOST KEY FINGERPRINTS 部分仅在实例首次启动之后可用。

  2. 在命令 shell 中,将目录更改为您启动实例时所指定的私有密钥文件的位置。

  3. 使用 chmod 命令确保您的私有密钥文件不是公开可见的。例如,如果您的私有密钥文件的名称是 my-key-pair.pem,请使用以下命令:

    chmod 400 /path/my-key-pair.pem
  4. 使用实例的公有 DNS 名称将文件传输到您的实例。例如,如果私有密钥文件的名称是 my-key-pair、要传输的文件是 SampleFile.txt、用户名是 ec2-user、实例的公有 DNS 名称是 ec2-198-51-100-1.compute-1.amazonaws.com.cn,则可以使用以下命令将文件复制到 ec2-user 主目录。

    scp -i /path/my-key-pair.pem /path/SampleFile.txt ec2-user@c2-198-51-100-1.compute-1.amazonaws.com.cn:~

    您会看到如下响应。

    The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com.cn (10.254.142.33)' can't be established. RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f. Are you sure you want to continue connecting (yes/no)?
  5. (仅限 IPv6) 或者,您可以使用实例的 IPv6 地址传输文件。IPv6 地址必须用方括号 ([]) 括起,方括号必须转义 (\)。

    scp -i /path/my-key-pair.pem /path/SampleFile.txt ec2-user@\[2001:db8:1234:1a00:9691:9503:25ad:1761\]:~
  6. (可选) 验证安全警报中的指纹是否与在步骤 1 中获取的指纹匹配。如果这些指纹不匹配,则表示有人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。

  7. 输入 yes

    您会看到如下响应。

    Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com.cn' (RSA) to the list of known hosts. Sending file modes: C0644 20 SampleFile.txt Sink: C0644 20 SampleFile.txt SampleFile.txt 100% 20 0.0KB/s 00:00

    如果您收到一个“bash: scp: command not found”(bash: scp: 命令未找到) 错误,您必须先在 Linux 实例上安装 scp。对于某些操作系统,该命令会位于 openssh-clients 程序包中。对于 Amazon Linux 变体 (如经 Amazon ECS 优化的 AMI),使用以下命令安装 scp.

    [ec2-user ~]$ sudo yum install -y openssh-clients
  8. 若要反方向传输文件 (从 Amazon EC2 实例中传输到本地计算机),则只需要简单地颠倒主机参数的顺序。例如,要将 SampleFile.txt 文件从您的 EC 实例传回到您的本地计算机上的主目录,并且另存为 SampleFile2.txt2.,则可在您的本地计算机上使用以下命令。

    scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com.cn:~/SampleFile.txt ~/SampleFile2.txt
  9. (仅限 IPv6) 或者,您可以使用实例的 IPv6 地址反方向传输文件。

    scp -i /path/my-key-pair.pem ec2-user@\[2001:db8:1234:1a00:9691:9503:25ad:1761\]:~/SampleFile.txt ~/SampleFile2.txt