连接到您的 Linux 实例 - Amazon Elastic Compute Cloud

连接到您的 Linux 实例

有许多方法可以连接到您的 Linux 实例。有些会根据您连接的本地计算机的操作系统而有所不同。其他则不会改变,如 EC2 Instance Connect 或 AWS Systems Manager 会话管理器。在本节中,您可以学习如何连接到 Linux 实例,以及如何在本地计算机和实例之间传输文件。有关如何连接到 Windows 实例的信息,请参阅《适用于 Windows 实例的 Amazon EC2 用户指南》中的连接到 Windows 实例

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

然后,选择以下其中一个选项来连接您的 Linux 实例。

注意

有关实例连接故障排除提示,请参阅排查实例的连接问题。

要排查基于 AWS Nitro System 构建的实例的启动、网络配置和其他问题,您可以使用 适用于 Linux 实例的 EC2 Serial Console

获取有关您的实例的信息

要准备连接到实例,请通过 Amazon EC2 控制台或使用 AWS CLI 获取以下信息。

Amazon EC2 控制台的实例窗格。
  • 获取实例的公有 DNS 名称。

    您可以从 Amazon EC2 控制台获取实例的公有 DNS。查看实例窗格的公有 IPv4 DNS 列。如果此列已隐藏,请选择屏幕右上角的设置图标( The gear icon. ),然后选择公有 IPv4 DNS。您也可以在实例窗格的实例信息部分找到公有 DNS。在 Amazon EC2 控制台的实例窗格中选择实例时,有关该实例的信息将显示在页面的下半部分。在详细信息选项卡下,查找公有 IPv4 DNS

    如果您愿意,也可以使用 describe-instances(AWS CLI)或 Get-EC2Instance(AWS Tools for Windows PowerShell)命令。

    如果未显示公有 IPv4 DNS,请验证实例状态是否正在运行,并确保您没有在私有子网中启动实例。如果您使用启动实例向导来启动实例,则可能已编辑网络设置下的自动分配公有 IP 字段,并且已将值更改为禁用。如果您禁用自动分配公有 IP 选项,则启动实例后不会为其分配公有 IP 地址。

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

    如果您已为实例分配 IPv6 地址,则可以选择使用 IPv6 地址代替公有 IPv4 地址或公有 IPv4 DNS 主机名,以连接到实例。您的本地计算机必须拥有 IPv6 地址,且必须配置为使用 IPv6。您可以从 Amazon EC2 控制台获取实例的 IPv6 地址。请查看实例窗格的 IPv6 IP 列。或者,您可以在实例信息部分找到 IPv6 地址。在 Amazon EC2 控制台的实例窗格中选择实例时,有关该实例的信息将显示在页面的下半部分。在详细信息选项卡下,查找 IPv6 地址

    如果您愿意,也可以使用 describe-instances(AWS CLI)或 Get-EC2Instance(AWS Tools for Windows PowerShell)命令。有关 IPv6 的更多信息,请参阅 IPv6 地址

  • 获取实例的用户名。

    您可以使用用户账户的用户名或用于启动实例的 AMI 的默认用户名连接到实例。

    • 获取用户账户的用户名。

      有关如何创建用户账户的更多信息,请参阅管理 Linux 实例上的用户

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

      用于启动实例的 AMI 默认用户名

      AL2023

      Amazon Linux 2

      Amazon Linux

      ec2-user
      CentOS centosec2-user
      Debian admin
      Fedora fedoraec2-user
      RHEL ec2-userroot
      SUSE ec2-userroot
      Ubuntu ubuntu
      Oracle ec2-user
      Bitnami bitnami
      Rocky Linux rocky
      其他 检查 AMI 提供程序

查找私有密钥并设置权限

您必须知道私有密钥文件的位置,才能连接到实例。对于 SSH 连接,必须设置权限,以确保只有您可以读取文件。

有关使用 Amazon EC2 时密钥对工作原理的信息,请参阅 Amazon EC2 密钥对和 Amazon EC2 实例

  • 查找私有密钥

    获取适用于启用实例时所指定密钥对的 .pem 文件在电脑上的全限定路径。有关更多信息,请参阅确定启动时指定的公有密钥。如果找不到私有密钥文件,请参阅我丢失了私有密钥。我怎样才能连接到我的 Linux 实例?

    如果您使用 Putty 连接到实例并且需要将 .pem 文件转换为 .ppk,请参阅本部分 使用 PuTTY 从 Windows 连接到 Linux 实例 主题中的 使用 PuTTYgen 转换私有密钥

  • 设置私有密钥文件的权限,以确保只有您可以读取该文件

    • 从 macOS 或 Linux 进行连接

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

      chmod 400 key-pair-name.pem

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

    • 从 Windows 进行连接

      打开“文件资源管理器”,然后右键单击 .pem 文件。依次选择属性 > 安全选项卡,然后选择高级。选择禁用继承。删除对所有用户(当前用户除外)的访问权限。

(可选)获取实例指纹

若要保护自己免遭中间人攻击,您可以通过验证显示的指纹,确认将要连接的实例的真实性。如果您从第三方提供的公有 AMI 启动实例,验证指纹将很有用。

任务概述

首先,从实例获取实例指纹。然后,当您连接到实例并收到验证指纹的提示时,请将在此过程中获取的指纹与显示的指纹进行比较。如果指纹不匹配,则表示有人可能在试图实施中间人攻击。如果二者匹配,则您可以放心地连接到您的实例。

获取实例指纹的先决条件
  • 实例不能处于 pending 状态。只有在第一次引导实例完成后,才能使用指纹。

  • 您必须为实例拥有者,才能获取控制台输出。

  • 可以采用多种方法获取实例指纹。如果要使用 AWS CLI,则必须将其安装在本地计算机上。有关安装 AWS CLI 的信息,请参阅 AWS Command Line Interface 用户指南中的安装 AWS Command Line Interface

获取实例指纹

在步骤 1 中,您将获得控制台输出,其中包括实例指纹。在步骤 2 中,您可以在控制台输出中找到实例指纹。

  1. 使用以下方法之一获取控制台输出。

    Console
    1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

    2. 从左侧导航窗格中选择实例

    3. 选择实例,然后依次选择操作监控和故障排除获取系统日志

    AWS CLI

    在本地计算机上(而不是正在连接的实例上),使用 get-console-output(AWS CLI)命令。如果输出过大,可将输出通过管道传输到文本文件,文本形式可能更易于阅读。请注意,使用 AWS CLI 时,必须明确指定或通过设置默认区域来指定 AWS 区域。有关如何设置或指定区域的信息,请参阅《AWS Command Line Interface 用户指南》中的配置基础知识

    aws ec2 get-console-output --instance-id instance_id --query Output --output text > temp.txt
  2. 在控制台输出中,找到位于 BEGIN SSH HOST KEY FINGERPRINTS 下方的实例(主机)指纹。可能有多个实例指纹。当您连接到实例时,它将仅显示其中一个指纹。

    确切的输出可能因操作系统、AMI 版本以及是否是由 AWS 创建密钥对而异。下面是示例输出。

    ec2:############################################################# ec2: -----BEGIN SSH HOST KEY FINGERPRINTS----- ec2: 256 SHA256:l4UB/neBad9tvkgJf1QZWxheQmR59WgrgzEimCG6kZY no comment (ECDSA) ec2: 256 SHA256:kpEa+rw/Uq3zxaYZN8KT501iBtJOIdHG52dFi66EEfQ no comment (ED25519) ec2: 2048 SHA256:L8l6pepcA7iqW/jBecQjVZClUrKY+o2cHLI0iHerbVc no comment (RSA) ec2: -----END SSH HOST KEY FINGERPRINTS----- ec2: #############################################################
    注意

    连接到实例时,您将引用此指纹。