跳至内容

如何在没有堡垒主机的情况下使用 Systems Manager 会话管理器端口转发通过 RDP 连接到我的 EC2 实例?

2 分钟阅读
0

我想使用会话管理器(AWS Systems Manager 的一项功能)中的端口转发功能,以便在不使用堡垒主机的情况下通过远程桌面协议 (RDP) 连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

当您在安全组中阻止入站访问时,可使用会话管理器端口转发通过 RDP 连接到您的实例。您无需打开入站端口或配置堡垒主机即可使用会话管理器端口转发。

先决条件:

使用 AWS CLI 建立端口转发会话

**注意:**使用 AWS CLI 建立到 Windows 实例的会话管理器端口转发会话。您无法使用 Start-SSMSession cmdlet 在 Windows 本地计算机上使用 Amazon Web Services Tools for PowerShell 建立端口转发会话。

完成以下步骤:

  1. 在本地计算机上运行以下命令,以建立从计算机端口 55678 到实例端口 3389 的隧道:
    aws ssm start-session --target example-instanceid --document-name AWS-StartPortForwardingSession --parameters "example-localPortNumber=55678,example-ec2instance-portNumber=3389"
    注意:请将示例值替换为您的值。
    如果连接成功,则会显示以下消息:
    “Starting session with SessionId: xxxxx-01234567891011abcPort 55678 opened for sessionId xxxxx-01234567891011abc
    Waiting for connections...”
  2. 使用本地 RDP 客户端连接到 localhost:55678,以便会话管理器可以将流量转发到实例上的远程端口 3389
    如果连接成功,则会显示以下消息:
    “Connection accepted for session xxx-01234567891011abc

结束端口转发会话

完成以下步骤:

  1. 关闭 RDP 会话。
  2. 在 AWS CLI 上,按 Ctrl + C 以结束端口转发会话。或者,使用 AWS Systems Manager 控制台结束会话
    如果会话成功结束,则会显示以下消息:
    “Terminate signal received, exiting.Exiting session with sessionId: xxxxx-01234567891011abc.”

连接故障排除

如果端口转发会话连接失败,请根据收到的错误执行以下操作。

AccessDeniedException

验证启动会话的用户是否具有所需的会话管理器权限

TargetNotConnected

验证是否为会话管理器完全配置了目标节点,且该节点在 Systems Manager Fleet Manager 控制台中显示为 Online(联机)。

当您在位于不同 AWS 账户或 AWS 区域的托管节点上启动会话时,也会出现此错误。有关详细信息,请参阅托管节点不可用或未为会话管理器配置托管节点

找不到会话管理器插件

检查您是否在本地计算机上安装了会话管理器插件。有关详细信息,请参阅为 AWS CLI 安装会话管理器插件

RDP 客户端无法连接

如果您的会话成功连接但 RDP 客户端无法连接,请检查您是否更改了实例上的默认 RDP 端口。请将 portNumber 参数值替换为您的值。有关详细信息,请参阅 Microsoft 网站上的 Check the RDP listener port(检查 RDP 侦听器端口)

相关信息

会话管理器故障排除