AWS EC2 学习之: 使用 PuTTY 从 Windows 连接到 Linux 实例


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

注意

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

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

先决条件

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

  • 安装 PuTTY

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

  • 获得实例的 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 AMI,用户名为 ec2-user

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

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

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

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

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

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

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

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

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

使用 PuTTYgen 转换您的私有**

PuTTY 本身不支持 Amazon EC2 生成的私有**格式 (.pem)。PuTTY 有一个名为 PuTTYgen 的工具,可将**转换成所需的 PuTTY 格式 (.ppk)。您必须将私有**转换为此格式 (.ppk),然后才能尝试使用 PuTTY 连接到您的实例。

转换您的私有**

  1. 启动 PuTTYgen (例如,在开始菜单中,选择 All Programs > PuTTY > PuTTYgen)。

  2. Type of key to generate 下,选择 RSA

    AWS EC2 学习之: 使用 PuTTY 从 Windows 连接到 Linux 实例

    如果您使用的是旧版本的 PuTTYgen,请选择 SSH-2 RSA

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

    AWS EC2 学习之: 使用 PuTTY 从 Windows 连接到 Linux 实例
  4. 选择您在启动实例时指定的**对的 .pem 文件,然后选择 Open。选择 OK 关闭确认对话框。

  5. 选择 Save private key,以 PuTTY 可以使用的格式保存**。PuTTYgen 显示一条关于在没有口令的情况下保存**的警告。选择

    注意

    私有**的口令是一层额外保护,因此,即使您的私有**被泄露,在没有口令的情况下,该**仍不可用。使用口令的缺点是让自动化变得更难,因为登录到实例或复制文件到实例需要进行人为干预。

  6. 为该**指定与**对相同的名称 (如,my-key-pair)。PuTTY 自动添加 .ppk 文件扩展名。

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

启动 PuTTY 会话

通过以下过程使用 PuTTY 连接到您的 Linux 实例。您需要使用为私有**创建的 .ppk 文件。如果您在尝试连接到您的实例时收到错误消息,请参阅排查实例的连接问题

启动 PuTTY 会话

  1. (可选) 您可以在本地系统 (而不是实例) 上使用 get-console-output (AWS CLI) 命令验证实例上的 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) 并将它与实例的指纹进行比较。

    
    
    aws ec2 get-console-output --instance-id instance_id

    以下是您应查找的内容的示例:

    -----BEGIN SSH HOST KEY FINGERPRINTS----- ... 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f ... -----END SSH HOST KEY FINGERPRINTS-----

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

  2. 启动 PuTTY (在开始菜单中,选择 All Programs > PuTTY > PuTTY)。

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

    1. Host Name 框中,输入 user_name@public_dns_name。确保为您的 AMI 指定相应的用户名。例如:

      • 对于 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,用户名称是 ubunturoot

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

    2. (仅限 IPv6) 要使用实例的 IPv6 地址连接,请输入 user_name@ipv6_address。确保为您的 AMI 指定相应的用户名。例如:

      • 对于 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,用户名称是 ubunturoot

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

    3. Connection type 下,选择 SSH

    4. 确保 Port 为 22。

    AWS EC2 学习之: 使用 PuTTY 从 Windows 连接到 Linux 实例
  4. (可选) 您可以配置 PuTTY 以定期自动发送“保持连接”数据以将会话保持活动状态。要避免由于会话处于不活动状态而与实例断开连接,这是非常有用的。在 Category 窗格中,选择 Connection,然后在 Seconds between keepalives 字段中输入所需的间隔。例如,如果您的会话在处于不活动状态 10 分钟后断开连接,请输入 180 以将 PuTTY 配置为每隔 3 分钟发送一次保持活动数据。

  5. Category 窗格中,展开 Connection,再展开 SSH,然后选择 Auth。完成以下操作:

    1. 选择 Browse

    2. 选择您为**对生成的 .ppk 文件,然后选择 Open

    3. (可选) 如果打算稍后重新启动此会话,则可以保存此会话信息以便日后使用。在 Category 树中选择 Session,在 Saved Sessions 中输入会话名称,然后选择 Save

    4. 选择打开以便开始 PuTTY 会话。

    AWS EC2 学习之: 使用 PuTTY 从 Windows 连接到 Linux 实例
  6. 如果这是您第一次连接到此实例,PuTTY 会显示安全警告对话框,询问您是否信任您要连接到的主机。

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

  8. 选择。此时会打开一个窗口并且您连接到了您的实例。

    注意

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

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

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

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

要使用 PSCP,您需要使用在使用 PuTTYgen 转换您的私有**中生成的私有**。您还需要使用 Linux 实例的公有 DNS 地址。

以下示例将 Sample_file.txt 文件从 Windows 计算机上的 C:\ 驱动器传输到 Amazon Linux 实例上的 ec2-user 主目录:


pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt [email protected]public_dns:/home/ec2-user/Sample_file.txt

(仅限 IPv6) 以下示例使用实例的 IPv6 地址传输文件 Sample_file.txt。IPv6 地址必须以方括号 ([]) 括起。


pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt [email protected][ipv6-address]:/home/ec2-user/Sample_file.txt

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

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

要使用 WinSCP,您需要使用在使用 PuTTYgen 转换您的私有**中生成的私有**。您还需要使用 Linux 实例的公有 DNS 地址。

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

  2. 启动 WinSCP。

  3. WinSCP 登录屏幕中,对于 Host name,请输入实例的公有 DNS 主机名称或公有 IPv4 地址。

    (仅限 IPv6) 要使用实例的 IPv6 地址登录,请输入实例的 IPv6 地址。

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

    • 对于 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,用户名称是 ubunturoot

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

  5. 为您的实例指定私有**。对于 Private key,请输入私有**的路径,或选择“...”按钮以浏览文件。对于较新版本的 WinSCP,请选择 Advanced 以打开高级站点设置,然后在 SSH 下面选择 Authentication 以查找 Private key file 设置。

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

    AWS EC2 学习之: 使用 PuTTY 从 Windows 连接到 Linux 实例

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

  6. (可选) 在左侧面板中,选择 Directories,然后对于 Remote directory,请输入要将文件添加到其中的目录路径。对于较新版本的 WinSCP,请选择 Advanced 以打开高级站点设置,然后在 Environment 下面选择 Directories 以查找 Remote directory 设置。

  7. 选择 Login 进行连接,然后选择 Yes,将主机指纹添加到主机缓存。

    AWS EC2 学习之: 使用 PuTTY 从 Windows 连接到 Linux 实例
  8. 建立连接后,在连接窗口中,您的 Linux 实例显示在右侧,本地计算机显示在左侧。您可以直接将文件从本地计算机拖放到远程文件系统。有关 WinSCP 的更多信息,请参阅 http://winscp.net/eng/docs/start 中的项目文档。

    如果您收到一个“Cannot execute SCP to start transfer”(无法执行 SCP 以开始传输) 错误,必须先在 Linux 实例上安装 scp。对于某些操作系统,该命令会位于 openssh-clients 程序包中。对于 Amazon Linux 变体 (如经 Amazon ECS 优化的 AMI),使用以下命令安装 scp.