MacBook 如何无跳板机 RDP 连接 AWS Wavelength Windows 实例

在 AWS Wavelength (5G 边缘云) 环境中,由于网络架构的特殊性(位于运营商网络边缘),传统的公网连接方式往往受到限制。通常大家会想到使用“跳板机” (Bastion Host),但这增加了运维成本和安全风险。

本文将介绍一种最安全、最推荐的方案:利用 AWS Systems Manager (SSM) 的端口转发功能,在 MacBook 和 Wavelength 实例之间建立加密隧道,直接通过 localhost 进行 RDP 远程桌面连接。


方案优势

  • 无需跳板机:节省一台机器的成本,减少维护工作。

  • 无需开放端口:实例的安全组 (Security Group) 不需要对公网开放 3389 高危端口。

  • 数据加密:所有流量通过 AWS SSM 加密隧道传输。


第一部分:AWS 端的准备工作 (至关重要)

很多连接失败(报错 TargetNotConnected)都是因为这部分没配置好。

1. 配置 IAM 角色 (IAM Role)

这是 SSM Agent 的“身份证”。

  • 创建一个 IAM Role,选择 EC2 服务。

  • 必须包含策略AmazonSSMManagedInstanceCore

  • 将此 Role 绑定到您的 Wavelength EC2 实例上。

2. 网络配置 (确保实例能“上网”)

SSM Agent 需要通过 HTTPS (443端口) 访问 AWS 管理后台。在 Wavelength 环境中,这通常意味着:

  • 分配 Carrier IP:为实例分配一个运营商 IP。

  • 配置路由表 (Route Table)

    • 确保子网关联的路由表中,有一条 0.0.0.0/0 的路由指向 Carrier Gateway (CAG) (注意:不是 IGW 或 NAT)。

  • 安全组出站规则:确保允许 443 端口或所有流量的出站 (Outbound)。

注意:如果您不想使用 Carrier IP,则必须在 VPC 内配置 Interface VPC Endpoints (SSM, SSMMessages, EC2Messages) 才能让内网机器连接 SSM 服务。


第二部分:MacBook 本地环境配置

1. 安装 AWS 工具

打开终端 (Terminal) 运行:

Bash
# 1. 安装 AWS CLI
brew install awscli

# 2. 安装 Session Manager 插件 (必须装,否则无法转发端口)
brew install --cask session-manager-plugin

# 3. 安装 Microsoft Remote Desktop (推荐)
# 请前往 Mac App Store 下载

2. 配置身份凭证

在终端运行 aws configure,并输入:

  • Access Key ID / Secret Access Key:从 IAM 控制台获取。

  • Region:输入实例所属的父区域代码 (例如 us-east-1,这一点很容易被忽略)。


第三部分:建立连接 (核心步骤)

1. 启动隧道命令

在终端中执行以下命令(建议复制整行,避免换行符导致的语法错误):

Bash
aws ssm start-session --region us-east-1 --target i-xxxxxxx --document-name AWS-StartPortForwardingSession --parameters '{"portNumber":["3389"],"localPortNumber":["55678"]}'
  • --region: 指定区域(如 us-east-1)。

  • --target: 替换为您的实例 ID。

  • localPortNumber: 您本地电脑的端口,这里设为 55678。

成功标志:

终端显示 Waiting for connections... 且光标闪烁。请勿关闭此窗口。

2. 发起 RDP 连接

  1. 打开 Microsoft Remote Desktop

  2. 添加 PC,主机名填写:localhost:55678

  3. 用户账号通常为 Administrator,密码通过 AWS 控制台 "Connect" -> "RDP Client" -> "Get password" 获取。

  4. 双击连接,即可进入 Windows 桌面。


常见报错与排查 (Troubleshooting)

在实战中,您可能会遇到以下错误,请对号入座:

错误信息原因分析解决方案
arguments are required: --target命令格式错误,通常是因为复制命令时带有多余的换行符。确保命令在同一行内输入。
You must specify a regionAWS CLI 不知道实例在哪个区。在命令中显式加上 --region us-east-1 (或对应区域)。
Unable to locate credentials本地没有配置 Access Key。运行 aws configure 输入密钥。
TargetNotConnected最常见错误。AWS 后台连不上实例。

1. 检查实例是否 Running


2. 重中之重:检查是否绑定了含 SSM...Core 权限的 IAM Role


3. 检查路由表是否指向 Carrier Gateway


进阶技巧:设置快捷别名

为了避免每次都输入长命令,可以在 ~/.zshrc 文件中添加别名:

Bash
alias connect-win='aws ssm start-session --region us-east-1 --target i-xxxxxxx --document-name AWS-StartPortForwardingSession --parameters "{\"portNumber\":[\"3389\"],\"localPortNumber\":[\"55678\"]}"'

保存后执行 source ~/.zshrc。以后只需在终端输入 connect-win 即可一键建立隧道。

Next Post Previous Post
No Comment
Add Comment
comment url