跳至内容

如何使用堡垒主机安全地连接到私有子网中的 Amazon EC2 Linux 实例?

2 分钟阅读
0

我想使用堡垒主机连接到在私有子网中运行的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例。

简短描述

EC2 Linux 实例使用 SSH 密钥对文件(而非 SSH 用户名和密码)作为默认的身份验证方法。要使用堡垒主机进行连接,请在客户端上使用 ssh-agent 转发。ssh-agent 无需使用堡垒机中的私钥即可将管理员从堡垒机连接到另一个实例。

默认情况下,大多数 Linux 和 macOS 发行版都包含 openssh-clients 软件包,其中含有 ssh-agent。对于 Windows 发行版,请使用 PuTTY 连接到 Linux 实例,并使用 Pageant 管理私钥。安装 Pageant 后,您可以使用 PuTTY 中的代理转发选项连接到私有子网中的实例。

**重要事项:**为了维护安全的环境,切勿在堡垒主机上存储私钥。

解决方法

**注意:**ssh-agent 在内存中运行,因此每次打开新的终端会话或重启计算机时都必须重复以下步骤。

**先决条件:**确保您的配置具有以下设置:

  • 堡垒主机位于虚拟私有云 (VPC) 的公有子网中。
  • 私有子网中实例的安全组仅允许来自堡垒主机的 SSH 连接。
  • 堡垒主机的安全组仅允许来自已知和可信 IP 地址通过端口 TCP/22 进行 SSH 连接。

在 macOS 或 Linux 客户端上配置 ssh-agent 转发

完成以下步骤:

  1. 运行以下命令,在后台启动 ssh-agent:

    eval $(ssh-agent)
  2. 运行以下命令,将 SSH 密钥添加到 ssh-agent:

    ssh-add "/path/to/key.pem"

    **注意:**将 path/to/key 替换为本地计算机上 .pem 文件的路径。ssh-agent 会将您的 SSH 密钥存储到内存中。

  3. 运行以下命令,验证 ssh-agent 是否已存储该密钥:

    ssh-add -l

    **注意:**验证密钥是否在输出中显示。
    输出示例:

     # 2048 SHA256:abc123... /home/user/.ssh/my-key.pem (RSA)
  4. 运行以下命令,在启用 ssh-agent 转发的情况下连接到堡垒主机:

    ssh -A User@Bastion_Host_IP_Address

    **注意:**将 User 替换为您的用户名,将 Bastion_Host_IP_address 替换为您的堡垒主机的 IP 地址。要查看您的亚马逊机器映像 (AMI) 的默认用户名,请参阅默认用户名。要使用 ssh-forwarding,请使用 -A 标志而非 -i 标志。使用 ssh-agent 时,SSH 会自动使用加载到内存中的密钥。

  5. 运行以下命令,连接到私有 Linux 实例:

    ssh User@Private_instance_IP_address

    **注意:**将 User 替换为您的用户名,将 Private_instance_IP_address 替换为您的实例的 IP 地址。

在 Windows 客户端上配置代理转发

完成以下步骤:

  1. 下载并安装 PuTTY、Pageant 和 PuTTYgen。要下载这些工具,请参阅 PuTTY 网站上的 Download PuTTY(下载 PuTTY)。
  2. 要使用 PuTTY 连接到您的实例,请使用 PuTTYgen 将您的私钥从 PEM 格式转换为 PuTTY 格式。
    **注意:**PuTTY 无法使用 PEM 格式的 SSH 密钥。
  3. 选择 Start(开始)菜单,然后打开 Pageant。
    **注意:**默认情况下,Pageant 在系统托盘中以最小化方式打开。如果 Pageant 图标在系统托盘中不显示,请使用任务栏设置将其添加。有关说明,请参阅 Microsoft 网站上的 Customize the taskbar in Windows(在 Windows 中自定义任务栏)。
  4. 要添加 SSH 密钥,请打开 Pageant 图标的上下文(右键单击)菜单,然后选择 Add Key(添加密钥)。然后,导航到您的私钥。
    **注意:**要查看已添加的密钥,请打开 Pageant 图标的上下文(右键单击)菜单,然后选择 View Keys(查看密钥)。
  5. 选择 Start(开始)菜单,然后打开 All Programs(所有程序)。
  6. 选择 PuTTY,然后选择 PuTTY。
  7. 在 Category(类别)下,选择 Session(会话)。
  8. 对于Host Name(主机名称),输入 user-name@instance-public-dns 以连接到您实例的公有 DNS 名称。或者,输入 user-name@instance-IPv4-address 以连接到您实例的 IPv4 地址。
    **注意:**将 user-name 替换为您的用户名,将 instance-public-dns 替换为您的实例的公有 DNS,将 instance-IPv4-address 替换为您的实例的 IPv4 地址。
  9. 根据您的需求配置 Connection type(连接类型)和 SSH 的值。对于 Port(端口),输入 22。
  10. 在 Category(类别)下,展开 Connection(连接)。
  11. 选择 SSH,然后选择 Auth。
  12. 选择 Allow agent forwarding(允许代理转发)。
  13. 选择 Open(打开)。
  14. 要连接到实例,请运行以下命令:
ssh User@Private_instance_IP_address

**注意:**将 User 替换为您的用户名,将 Private_instance_IP_address 替换为您的实例的 IP 地址。

AWS 官方已更新 8 个月前