我可以使用哪些方法连接我的 EC2 Linux 实例?

4 分钟阅读
0

我想知道有哪些选项可用于连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例。

简短描述

连接 Amazon EC2 Linux 实例有四种方法:

  • 安全外壳 (SSH)
  • 适用于 Linux 实例的 EC2 Serial Console
  • 会话管理器,AWS Systems Manager 的一项功能
  • Amazon EC2 Instance Connect

解决方法

SSH

局限性:

**重要信息:**在连接到您的实例之前,请确保具备所有先决条件

方法 1: 使用终端窗口

打开终端窗口(Linux 或 macOS),然后运行 SSH 命令连接到实例。

使用公共域名:

ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name

使用公共 IPv4 地址:

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

使用公共 IPv6 地址:

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

有关详细信息,请参阅使用 SSH 连接到您的 Linux 实例

方法 2: 在 Windows 上使用 OpenSSH

1.运行以下命令使用 PowerShell 安装适用于 Windows 的 OpenSSH。

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

**注意:**要安装 OpenSSH,您必须以管理员身份运行 PowerShell。

2.运行 SSH 命令连接到您的实例:

使用公共域名:

ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name

使用公共 IPv4 地址:

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

使用公共 IPv6 地址:

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

方法 3: 在 Windows 中使用 PuTTY

1.使用 PuTTYgen 转换您的私钥

2.使用 PuTTY 连接到您的实例。

3.启动 PuTTY。

4.在类别下,选择会话

5.在主机名中,输入用户名/主机名组合:

使用公共域名:

instance-user-name@instance-public-dns-name

使用公共 IPv4 地址:

instance-user-name@instance-IPv4-address

使用公共 IPv6 地址:

instance-user-name@instance-IPv6-address

6.确保端口值与 SSH 服务端口相匹配(默认 22)。

7.对于连接类型,选择 SSH

8.在类别下,展开连接,展开 SSH,然后选择 Auth

9.选择浏览,然后选择您为密钥对生成的 .ppk 文件。

10.选择打开

**注意:**首次连接到实例时,必须确认您信任远程主机。

适用于 Linux 实例的 EC2 Serial Console

EC2 Serial Console 与 EC2 实例建立串行连接,以便您解决启动和网络连接问题。

局限性:

  • 每个实例仅支持一个活跃的串行控制台连接。
  • 会话之间必须至少有 30 秒的间隔。
  • 在 EC2 Serial Console 会话期间,您的实例的吞吐量略有下降。
  • 不支持 Xen 实例
  • Wavelength Zone 和 AWS Outposts 不支持 EC2 Serial Console。
  • 只有某些 AWS 区域支持 EC2 Serial Console

**重要信息:**在使用 EC2 Serial Console 进行连接之前,请确保具备所有先决条件

方法 1: 使用基于浏览器的客户端

1.打开 EC2 控制台

2.选择实例

3.选择您的实例,然后依次选择操作监控和故障排除EC2 Serial Console连接。或选择实例,然后依次选择连接EC2 串行控制台连接

4.当浏览器内终端窗口打开时,按 Enter。如果出现登录提示,请输入基于密码的用户的用户名,然后按 Enter

密码提示符处,输入密码,然后按 Enter

方法 2: 使用 SSH

1.将您的 SSH 公钥推送到实例以启动串行控制台会话:

aws ec2-instance-connect send-serial-console-ssh-public-key \
    --instance-id i-0123456789EXAMPLE \
    --serial-port 0 \
    --ssh-public-key file://my_key.pub \
    --region us-east-1

**注意:**在前面的示例命令中,确保将 file:// 前缀添加到 SSH 公钥路径。

2.使用您的私钥连接到串行控制台:

ssh -i my_key i-0123456789EXAMPLE.port0@serial-console.ec2-instance-connect.us-east-1.aws

3.(可选)验证指纹。将您首次连接到串行控制台时出现的指纹与该地区唯一的 EC2 Serial Console 指纹进行比较。

4.如果再次出现提示,请输入基于密码的用户的用户名,然后按 Enter

5.在密码提示符处,输入密码,然后按 Enter

会话管理器

会话管理器允许安全访问托管节点,无需打开入站端口或管理 SSH 密钥。您可以使用 AWS CloudTrail 事件来审核会话管理器会话,并使用 AWS Identity and Access Management (AWS IAM) 策略控制会话。

局限性:

  • 您无法使用会话管理器传输文件。
    **注意:**相反,使用 S3 桶和 AWS CLI 来交换数据。
  • 日志记录不适用于通过端口转发或 SSH 连接的会话管理器会话。这是因为 SSH 会加密所有会话数据,而会话管理器仅用作 SSH 连接的隧道。
  • 并非所有操作系统 (OS) 都支持 AWS Systems Manager。有关更多信息,请参阅支持的操作系统

**重要信息:**在使用会话管理器连接到您的实例之前,请确保具备所有先决条件

最佳做法是创建 VPC 终端节点供 Systems Manager 使用:

  1. 打开 Systems Manager 控制台
  2. 选择会话管理器
  3. 选择启动会话
  4. (可选)在会话原因字段中输入会话描述。
  5. 选择要连接的托管节点,然后选择启动会话以立即启动会话。
    -或-
    (可选)使用自定义文档配置会话设置,包括持续时间、加密和日志记录:
    对于会话选项,选择下一步
    对于会话文档,选择要在会话启动时运行的文档。如果您的文档支持运行时系统参数,则可以在每个参数字段中输入一个或多个以逗号分隔的值。
    选择下一步
    选择启动会话

使用 EC2 控制台进行连接

  1. 打开 EC2 控制台
  2. 选择实例
  3. 选择实例,然后选择连接
  4. 对于连接方法,选择会话管理器
  5. 选择连接

使用 AWS CLI 进行连接

注意:

运行以下命令:

aws ssm start-session --target instance-id

通过会话管理器上使用 SSH 进行连接

要求:

  • 您必须将目标托管实例配置为支持 SSH 连接
  • 正在运行的 AWS Systems Manager Agent (SSM Agent) 版本必须是 2.3.672.0 或更高版本。
  • 您可以访问 Privacy Enhanced Mail (PEM) 证书,并且可以使用与其关联的帐户进行连接。例如,Ubuntu 托管节点的用户账户“ubuntu”。

要使用 SSH 启动会话,请运行以下命令:

ssh -i /path/my-key-pair.pem username@instance-id,/code>

Amazon EC2 Instance Connect

EC2 Instance Connect 允许通过 SSH 安全访问您的实例。EC2 Instance Connect 提供多种选项,无需共享 SSH 密钥即可连接到您的实例。

局限性:

  • EC2 Instance Connect 对 Linux 发行版的支持有限。
  • 必须尚未配置 AuthorizedKeysCommandAuthorizedKeysCommandUser 设置。
  • 本地区域不支持 EC2 Instance Connect。
  • 使用 Amazon EC2 控制台时,必须使用公共 IPv4 地址才能连接。
  • EC2 Instance Connect 不支持使用 IPv6 地址进行连接。

**重要信息:**在使用 Amazon EC2 Instance Connect 之前,务必具备所有先决条件

使用 Amazon EC2 控制台进行连接(仅适用于具有 IPv4 公共地址的实例)

1.打开 Amazon EC2 控制台

2.在导航窗格中,选择实例

3.选择实例,然后选择连接

4.选择 EC2 Instance Connect

5.验证用户名,然后选择连接打开终端窗口。

使用您自己的密钥和 SSH 客户端进行连接

**注意:**您必须在要连接的实例上安装 EC2 Instance Connect CLI

1.运行以下命令生成新的 SSH 私钥和公钥:

ssh-keygen -t rsa -f my_key

2.将您的 SSH 公钥推送到实例:

Amazon Linux:

aws ec2-instance-connect send-ssh-public-key \
    --region us-west-2 \
    --instance-id i-0123456789Amzn \
    --instance-os-user ec2-user \
    --ssh-public-key file://my_key.pub

Ubuntu:

aws ec2-instance-connect send-ssh-public-key \
    --region us-west-2 \
    --instance-id i-0123456789Ubuntu \
    --instance-os-user ubuntu\
    --ssh-public-key file://my_key.pub

**注意:**在前面的示例命令中,确保将 file:// 前缀添加到 SSH 公钥路径。

3.使用您的私钥连接到实例:

Amazon Linux:

ssh -o "IdentitiesOnly=yes" -i my_key ec2-user@instance-public-dns-name

Ubuntu:

ssh -o "IdentitiesOnly=yes" -i my_key ubuntu@instance-public-dns-name

**注意:**标准的 Amazon EC2 实例公共 DNS 名称类似于 **ec2-12-34-56-78.us-west-2.compute.amazonaws.com。**该名称由 AWS 域、服务(在本示例中为 compute)、区域和公共 IP 地址的形式组成。

使用 EC2 实例 CLI 进行连接

Amazon Linux:

$mssh i-0123456789Amzn

Ubuntu:

$mssh ubuntu@i-0123456789Ubuntu
AWS 官方
AWS 官方已更新 10 个月前