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

从 Windows 连接到 Linux 实例

您可以使用以下方法从装有 Windows 操作系统的本地计算机连接到您的 Linux 实例。

以下步骤将说明如何使用 OpenSSH(一种使用 SSH 协议进行远程登录的开源连接工具)从 Windows 连接到 Linux 实例。Windows Server 2019 及更高版本操作系统支持 OpenSSH。

先决条件

使用 OpenSSH 从 Windows 连接到您的 Linux 实例之前,请先完成以下先决条件。

验证该实例是否就绪

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

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

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

确定您的 Windows 版本

若要使用 OpenSSH 从 Windows 连接到您的 Linux 实例,Windows 版本必须为 Windows Server 2019 及更高版本。

确定 PowerShell 先决条件

若要在 Windows 操作系统上使用 PowerShell 安装 OpenSSH,您必须运行 PowerShell 版本 5.1 或更高版本,并且您的账户必须是内置管理员组的成员。在 PowerShell 中运行 $PSVersionTable.PSVersion 以查看 PowerShell 版本。

若要查看您是否是内置管理员组的成员,请运行以下 PowerShell 命令:

(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

如果您是内置管理员组的成员,则输出为 True

使用 PowerShell 安装适用于 Windows 的 OpenSSH

若要使用 PowerShell 安装适用于 Windows 的 OpenSSH,请运行以下 PowerShell 命令:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

预期输出:

Path : Online : True RestartNeeded : False

使用 OpenSSH 从 Windows 连接到 Linux 实例

安装 OpenSSH 后,按照以下步骤使用 OpenSSH 从 Windows 连接到您的 Linux 实例。如果您在尝试连接到实例时收到错误,请参阅 排查 Linux 实例的连接问题

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

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

      ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
    • (IPv6) 或者,如果您的实例具有 IPv6 地址,要使用实例的 IPv6 地址进行连接,请输入以下命令。

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

    您会看到如下响应:

    The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (198-51-100-1)' can't be established.
    ECDSA key fingerprint is l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
  2. (可选) 验证安全警报中的指纹是否与您之前在 (可选)获取实例指纹 中获得的指纹相匹配。如果这些指纹不匹配,则表示有人可能在试图实施中间人攻击。如果匹配,请继续到下一步。

  3. 输入 yes

    您会看到如下响应:

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

使用 PowerShell 将 OpenSSH 从 Windows 卸载

若要使用 PowerShell 将 OpenSSH 从 Windows 卸载,请运行以下 PowerShell 命令:

Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

预期输出:

Path : Online : True RestartNeeded : True

如果您运行的是 Windows Server 2019 或更高版本,我们建议使用 OpenSSH,这是一款使用 SSH 协议进行远程登录的开源连接工具。有关使用 OpenSSH 从 Windows 连接到 Linux 实例的步骤,请参阅 使用 OpenSSH 从 Windows 连接到 Linux 实例

以下说明介绍如何使用 PuTTY (适用于 Windows 的免费 SSH 客户端) 连接到您的实例。如果您在尝试连接到实例时收到错误,请参阅 排查 Linux 实例的连接问题

先决条件

使用 PuTTY 连接到您的 Linux 实例之前,请先完成以下先决条件。

验证该实例是否就绪

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

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

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

在本地计算机上安装 PuTTY

PuTTY 下载页面下载 PuTTY 并安装。如果您安装的是早期版本的 PuTTY,建议您下载最新版本。确保安装整个套件。

使用 PuTTYgen 将您的私有 .pem 密钥转换为 .ppk

对于您在启动实例时指定的密钥对,如果您选择以 .pem 格式创建私有密钥,则您必须将其转换为 .ppk 文件,以便与 PuTTY 一起使用。找到私有 .pem 文件,然后按照下一节中的步骤操作。

使用 PuTTYgen 转换私有密钥

PuTTY 自身并不支持适用于 SSH 密钥的 PEM 格式。PuTTY 提供一种名为 PuTTYgen 的工具,该工具可以将 PEM 密钥转换为 PuTTY 所需的 PPK 格式。您必须如下所示将私有密钥(.pem 文件)转换为此格式(.ppk 文件),以便使用 PuTTY 连接到您的实例。

将您的私有 .pem 密钥转换为 .ppk
  1. Start (开始) 菜单中,依次选择 All Programs (所有程序)PuTTYPuTTYgen

  2. Type of key to generate 下,选择 RSA。如果您的 PuTTYgen 版本不包含此选项,请选择 SSH-2 RSA

    PuTTYgen 中的 RSA 密钥。
  3. 选择 Load。默认情况下,PuTTYgen 仅显示扩展名为 .ppk 的文件。要找到您的 .pem 文件,请选择显示所有类型的文件的选项。

    选择所有文件类型。
  4. 选择在启动实例时指定的密钥对的 .pem 文件,然后选择打开。PuTTYgen 显示一个通知,即 .pem 文件已导入成功。选择 OK (确定)

  5. 要以 PuTTY 可以使用的格式保存密钥,请选择 Save private key (保存私有密钥)。PuTTYgen 显示一条关于在没有密码的情况下保存密钥的警告。选择

    注意

    私有密钥上的密码提供额外一层保护。即使发现了您的私有密钥,也不能在没有密码的情况下使用该密钥。使用密码的缺点是自动化更难实现,因为需要人工干预以登录到实例或将文件复制到实例中。

  6. 为密钥指定您用于密钥对的相同名称(例如 key-pair-name)并选择 Save (保存)。PuTTY 会自动添加 .ppk 文件扩展名。

您的私有密钥格式现在是正确的 PuTTY 使用格式了。您现在可以使用 PuTTY 的 SSH 客户端连接到实例。

连接到您的 Linux 实例

通过以下过程使用 PuTTY 连接到您的 Linux 实例。您需要使用为私有密钥创建的 .ppk 文件。有关更多信息,请参阅上一个部分中的使用 PuTTYgen 转换私有密钥。如果您在尝试连接到实例时收到错误,请参阅 排查 Linux 实例的连接问题

PuTTY 的最后测试版本:.78

使用 PuTTY 连接到您的实例
  1. 启动 PuTTY(从开始菜单中,搜索 PuTTY,然后选择打开)。

  2. Category 窗格中,选择 Session 并填写以下字段:

    1. 主机名框中,执行以下操作之一:

      • (公有 DNS)要使用实例的公有 DNS 名称进行连接,请输入 instance-user-name@instance-public-dns-name

      • (IPv6)或者,如果实例具有 IPv6 地址,要使用实例的 IPv6 地址进行连接,请输入 instance-user-name@instance-IPv6-address

      有关如何获取实例的用户名以及实例的公有 DNS 名称或 IPv6 地址的信息,请参阅获取有关您的实例的信息

    2. 确保端口值为 22。

    3. 连接类型下,选择 SSH

    PuTTY 配置 – 会话。
  3. (可选) 您可以配置 PuTTY 以定期自动发送“保持连接”数据以将会话保持活动状态。要避免由于会话处于不活动状态而与实例断开连接,这是非常有用的。在类别 窗格中,选择连接,然后在 keepalives 之间的秒数中输入所需的间隔。例如,如果您的会话在处于不活动状态 10 分钟后断开连接,请输入 180 以将 PuTTY 配置为每隔 3 分钟发送一次保持活动数据。

  4. 类别窗格中,依次展开连接SSHAuth。选择凭证

  5. 用于身份验证的私有密钥文件旁,选择浏览。在选择私有密钥文件对话框中,选择您为密钥对生成的 .ppk 文件。您可以双击该文件,也可以在选择私有密钥文件对话框中选择打开

  6. (可选)如果打算在此会话后再次连接到此实例,则可以保存此会话信息以便日后使用。在类别窗格中,选择会话。在已保存的会话中输入会话名称,然后选择保存

  7. 要连接到实例,请选择打开

  8. 如果这是第一次连接到该实例,PuTTY 将显示安全警报对话框,以询问您是否信任要连接到的主机。

    1. (可选) 验证安全警报对话框中的指纹是否与您之前在 (可选)获取实例指纹 中获得的指纹相匹配。如果这些指纹不匹配,则表示有人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。

    2. 选择 Accept (接受)。将打开一个窗口,并且您连接到实例。

      注意

      如果您在将私有密钥转换成 PuTTY 格式时指定了密语,当您登录到实例时,您必须提供该密语。

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

使用 PuTTY 安全复制客户端将文件传输到您的 Linux 实例

PuTTY 安全复制客户端 (PSCP) 是一个命令行工具,可用于在 Windows 计算机和 Linux 实例之间传输文件。如果您更喜欢图形用户界面 (GUI),您可以使用一种叫作“WinSCP”的开源 GUI 工具。有关更多信息,请参阅使用 WinSCP 将文件传输到您的 Linux 实例

要使用 PSCP,您需要使用在使用 PuTTYgen 转换私有密钥中生成的私有密钥。您还需要使用 Linux 实例的公有 DNS 名称或 IPv6 地址(如果实例具有该地址)。

以下示例将 Sample_file.txt 文件从 Windows 计算机上的 C:\ 驱动器传输到 Amazon Linux 实例上的 instance-user-name 主目录。要传输文件,请使用以下命令之一。

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

    pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt instance-user-name@instance-public-dns-name:/home/instance-user-name/Sample_file.txt
  • (IPv6) 或者,如果实例具有 IPv6 地址,要使用实例的 IPv6 地址传输文件,请输入以下命令。IPv6 地址必须用方括号 ([ ]) 括起来。

    pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt instance-user-name@[instance-IPv6-address]:/home/instance-user-name/Sample_file.txt

使用 WinSCP 将文件传输到您的 Linux 实例

WinSCP 是适用于 Windows 的基于 GUI 的文件管理器,您可以通过它来使用 SFTP、SCP、FTP 和 FTPS 协议将文件上传并传输到远程计算机。借助 WinSCP,您可以将文件从 Windows 计算机拖放到 Linux 实例,或者在两个系统之间同步整个目录结构。

要求
  • 您必须拥有在使用 PuTTYgen 转换私有密钥中生成的私有密钥。

  • 您必须拥有 Linux 实例的公有 DNS 名称。

  • 您的 Linux 实例必须已安装 scp。对于某些操作系统,您需要安装 openssh-clients 软件包。对于其他操作系统(例如经 Amazon ECS 优化的 AMI),您需要安装 scp 软件包。请参阅您的 Linux 发行版的文档。

使用 WinSCP 连接到您的实例
  1. http://winscp.net/eng/download.php 上下载并安装 WinSCP。对于大多数用户而言,采用默认安装选项就可以了。

  2. 启动 WinSCP。

  3. WinSCP login (WinSCP 登录) 屏幕上,为 Host name (主机名) 输入以下内容之一:

    • (公有 DNS 或 IPv4 地址)要使用实例的公有 DNS 名称或公有 IPv4 地址登录,请输入实例的公有 DNS 名称或公有 IPv4 地址。

    • (IPv6) 或者,如果实例具有 IPv6 地址,要使用实例的 IPv6 地址登录,请输入实例的 IPv6 地址。

  4. 对于用户名,请输入默认的 AMI 用户名。

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

    • 对于 CentOS AMI,用户名是 centosec2-user

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

    • 对于 Fedora AMI,用户名是 fedoraec2-user

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

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

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

    • 对于 Oracle AMI,用户名是 ec2-user

    • 对于 Bitnami AMI,用户名称是 bitnami

    注意

    要查找其他 Linux 发行版的默认用户名,请咨询 AMI 提供商。

  5. 为您的实例指定私有密钥文件。

    1. 选择高级... 按钮。

    2. 在 SSH 下,选择身份验证

    3. 指定私有密钥文件的路径,或选择 ... 按钮来浏览到密钥对文件。

    4. 选择确定

    以下是 WinSCP 版本 6.1 中的屏幕截图:

    WinSCP Advanced 屏幕。

    WinSCP 需要 PuTTY 私有密钥文件 (.ppk)。您可以使用 PuTTYgen 将 .pem 安全密钥文件转换成 .ppk 格式。有关更多信息,请参阅使用 PuTTYgen 转换私有密钥

  6. (可选)在左侧面板中,选择目录。对于远程目录,请输入要将文件添加到的目录的路径。要打开高级站点设置,对于较高版本的 WinSCP,请选择高级。要查找远程目录设置,请在环境下面选择目录

  7. 选择登录。要将主机指纹添加到主机缓存中,请选择

    WinSCP 屏幕。
  8. 建立连接后,在连接窗口中,您的 Linux 实例显示在右侧,本地计算机显示在左侧。您可以在远程文件系统和本地计算机之间拖放文件。有关 WinSCP 的更多信息,请参阅 http://winscp.net/eng/docs/start 中的项目文档。

    如果您收到无法运行 SCP 来启动传输的错误信息,请验证是否已安装在 Linux 实例 scp 上。

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

以下说明介绍如何使用 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 实例的连接问题

先决条件

在连接到 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 实例。如果您在尝试连接到实例时收到错误,请参阅 排查 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 发行版?