使用适用于 Linux 的 Windows 子系统(WSL)从 Windows 连接到 Linux 实例 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用适用于 Linux 的 Windows 子系统(WSL)从 Windows 连接到 Linux 实例

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

以下说明介绍如何使用 Windows Subsystem for Linux(WSL)上的 Linux 发行版来连接到您的实例。可以免费下载 WSL,可用于在 Windows 上直接将本机 Linux 命令行工具与传统 Windows 桌面一起运行,而不会产生虚拟机开销。

通过安装 WSL,您可以使用本机 Linux 环境连接到 Linux EC2 实例,而不是使用 PuTTY 或 PuTTYgen。Linux 环境让连接到 Linux 实例变得更轻松,因为它附带一个本机 SSH 客户端,可用于连接到 Linux 实例并更改 .pem 密钥文件的权限。Amazon EC2 控制台提供用于连接到 Linux 实例的 SSH 命令,并且您可以获得 SSH 命令中的详细输出以进行故障排除。有关更多信息,请参阅 Windows Subsystem for Linux 文档

注意

在安装 WSL 后,所有先决条件和步骤都相同(如使用 SSH 从 Linux 或 macOS 连接到 Linux 实例中所述),并且体验与使用本机 Linux 的体验类似。

如果您在尝试连接到实例时收到错误,请参阅 排查实例的连接问题。

先决条件

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

验证该实例是否就绪

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

验证有关连接到您的实例的常规先决条件

要查找实例的公有 DNS 名称或 IP 地址以及您在连接到实例时应使用的用户名,请参阅获取有关您的实例的信息

在本地计算机上安装 Windows Subsystem for Linux (WSL) 和 Linux 发行版

按照 Windows 10 安装指南中的说明执行操作来安装 WSL 和 Linux 发行版。说明中的示例安装的是 Linux 的 Ubuntu 发行版,但您可以安装任意发行版。系统会提示您重新启动计算机以使更改生效。

将私有密钥从 Windows 复制到 WSL

在 WSL 终端窗口中,将 .pem 文件(适用于您在启动实例时指定的密钥对)从 Windows 复制到 WSL。记下在连接到实例时要使用的 WSL 上的 .pem 文件的完全限定路径。有关如何指定 Windows 硬盘的路径的信息,请参阅如何访问我的 C 驱动器?。有关密钥对和 Windows 实例的更多信息,请参阅 Amazon EC2 密钥对和 Windows 实例

cp /mnt/<Windows drive letter>/path/my-key-pair.pem ~/WSL-path/my-key-pair.pem

使用 WSL 连接到 Linux 实例

通过以下过程使用 Windows Subsystem for Linux (WSL) 连接到 Linux 实例。如果您在尝试连接到实例时收到错误,请参阅 排查实例的连接问题。

使用 SSH 连接到您的实例
  1. 在终端窗口中,使用 ssh 命令连接到该实例。您指定私有密钥的路径和文件名 (.pem)、实例的用户名以及实例的公有 DNS 名称或 IPv6 地址。有关如何查找私有密钥、实例的用户名以及实例的 DNS 名称或 IPv6 地址的更多信息,请参阅查找私有密钥并设置权限获取有关您的实例的信息。要连接到实例,请使用以下命令之一。

    • (公有 DNS)要使用实例的公有 DNS 名称进行连接,请输入以下命令。

      ssh -i /path/key-pair-name.pem instance-user-name@my-instance-public-dns-name
    • (IPv6) 或者,如果实例具有 IPv6 地址,您可以使用其 IPv6 地址连接到该实例。请在 ssh 命令中指定私有密钥 (.pem) 文件路径、适当的用户名和 IPv6 地址。

      ssh -i /path/key-pair-name.pem instance-user-name@my-instance-IPv6-address

    您会看到如下响应:

    The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (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)?
  2. (可选) 验证安全警报中的指纹是否与您之前在 (可选)获取实例指纹 中获得的指纹相匹配。如果这些指纹不匹配,则表示有人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。

  3. 输入 yes

    您会看到如下响应:

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

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

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

先决条件

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

使用 SCP 来传输文件
  1. 使用实例的公有 DNS 名称将文件传输到您的实例。例如,如果私有密钥文件的名称为 key-pair-name,要传输的文件为 SampleFile.txt,用户名为 instance-user-name,实例的公有 DNS 名称为 my-instance-public-dns-name 或 IPv6 地址为 my-instance-IPv6-address,请使用以下命令之一将该文件复制到 instance-user-name 主目录中。

    • (公有 DNS)要使用实例的公有 DNS 名称传输文件,请输入以下命令。

      scp -i /path/key-pair-name.pem /path/SampleFile.txt instance-user-name@my-instance-public-dns-name:~
    • (IPv6) 或者,如果实例具有 IPv6 地址,您可以使用实例的 IPv6 地址传输文件。IPv6 地址必须用方括号 ([ ]) 括起来,并且必须对方括号进行转义 (\)。

      scp -i /path/key-pair-name.pem /path/SampleFile.txt instance-user-name@\[my-instance-IPv6-address\]:~

    您会看到如下响应:

    The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (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)?
  2. (可选) 验证安全警报中的指纹是否与您之前在 (可选)获取实例指纹 中获得的指纹相匹配。如果这些指纹不匹配,则表示有人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。

  3. 输入 yes

    您会看到如下响应:

    Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (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
  4. 要在另一个方向上传输文件(从 Amazon EC2 实例中传输到本地计算机),请颠倒主机参数的顺序。例如,要将 SampleFile.txt 文件从 EC2 实例传回到本地计算机上的主目录并保存为 SampleFile2.txt,请在本地计算机上使用以下命令之一。

    • (公有 DNS)要使用实例的公有 DNS 名称传输文件,请输入以下命令。

      scp -i /path/key-pair-name.pem instance-user-name@ec2-198-51-100-1.compute-1.amazonaws.com:~/SampleFile.txt ~/SampleFile2.txt
    • (IPv6) 或者,如果实例具有 IPv6 地址,要使用实例的 IPv6 地址在另一个方向上传输文件,请输入以下命令。

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

卸载 WSL

有关卸载 Windows Subsystem for Linux 的信息,请参阅如何卸载 WSL 发行版?