跳转到内容

RDP 远程桌面映射

场景:你想在咖啡店、客户现场、出差路上,用笔记本回到办公室或家里的那台 Windows 桌面。这是蜻蜓映射最常被问到的用法。

第 1 步:在目标 Windows 上启用远程桌面

Section titled “第 1 步:在目标 Windows 上启用远程桌面”

被远程的那台机器(下文称机器 A)上:

  1. 右键「此电脑」→ 「属性」→ 「远程桌面」(Win 10/11 也可以从「设置 → 系统 → 远程桌面」进)
  2. 把「启用远程桌面」打开
  3. 勾选「仅允许运行使用网络级别身份验证 (NLA) 的远程桌面的计算机连接
  4. 给当前用户设置一个强密码(没有密码的账户无法远程登录)

第 2 步:在机器 A 上安装桌面客户端

Section titled “第 2 步:在机器 A 上安装桌面客户端”

参考 客户端安装指南 → Windows。安装完成后启动客户端并登录,进入「内网穿透」页——后面创建映射就在这里完成。

机器 A 的桌面客户端里,点右上角「+ 新建映射」,弹窗顶部选「远程桌面」预设——协议和端口会自动填成 TCP / 3389:

桌面客户端新建映射弹窗:选中「远程桌面」预设,协议 TCP、本地端口 3389

各字段填法:

字段 填什么
映射名称 比如 远程桌面
协议 TCP(选预设后自动选好)
本地地址 127.0.0.1(如果是远程映射另一台局域网内的机器,填它的内网 IP)
本地端口 3389

点「创建映射」提交。映射会出现在列表里,状态显示在线,右边就是分配好的公网入口——TCP 映射的入口是「域名:端口」形式,远程端口由服务器自动分配:

客户端映射列表:远程桌面一条把本地 3389 端口映射到公网入口,状态在线

在你手里那台(下文称机器 B)上:

  1. Win + R,输入 mstsc,回车
  2. 在「计算机」一栏填入上一步拿到的公网入口,形如 lkd4rgil.beesdc.com:43443

远程桌面连接窗口:计算机一栏填入「域名加端口」形式的公网入口

  1. 点「连接」后,Windows 会弹出凭据框——用户名填机器 A 上的 Windows 账号,密码填它的登录密码

Windows 安全中心凭据框:填写机器 A 的 Windows 账号与密码

如果一切正常,你应该已经看到机器 A 的桌面。

RDP 是公网攻击的高频目标。桌面客户端左侧「安全」分组下有两个入口,至少做下面三件事:

  1. 访问规则」——给这条映射加上入口限制,连接者先过规则,再到达 RDP
  2. 爆破防护」——开启 SSH/RDP 防爆破,挡住撞库式的密码尝试
  3. 在访问规则里配置 IP 白名单:只放行你常用的几个出口 IP

完整清单见 安全指南

[截图占位:桌面客户端 → 访问规则 / 爆破防护页]

如果第 4 步连不上,按下面顺序在机器 A 上排查。

1. 远程桌面服务有没有真的在监听 3389?

Section titled “1. 远程桌面服务有没有真的在监听 3389?”

打开 PowerShell(Win + R → 输入 powershell),执行:

Terminal window
netstat -ano | findstr "3389"

应该看到类似输出,关键是右侧的 LISTENING

命令行执行 netstat 查 3389 端口,输出中 TCP 两行状态为 LISTENING

如果完全没输出 → RDP 服务没起来,转到下一步。

2. 注册表里 RDP 配的是哪个端口?

Section titled “2. 注册表里 RDP 配的是哪个端口?”
Terminal window
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber

正常输出 PortNumber REG_DWORD 0xd3d0xd3d = 十进制 3389)。

命令行查询注册表 RDP 端口,输出 PortNumber 为 REG_DWORD 类型的 0xd3d

如果输出不是 0xd3d,说明默认端口被改过了——按改过的端口去 netstat 验证服务状态,并把映射里的「本地端口」也改成同一个值。

3. 「Remote Desktop Services」服务有没有运行?

Section titled “3. 「Remote Desktop Services」服务有没有运行?”
Terminal window
services.msc

打开服务面板后按 R 跳到 R 字头,找「Remote Desktop Services」:

  • 状态应当是「正在运行
  • 启动类型推荐「自动

Windows 服务面板中 Remote Desktop Services 一行,状态显示正在运行

如果状态是空的,右键 → 「启动」。启动失败的话,去事件查看器 (eventvwr.msc) 看具体报错。

如果服务启动报错,多半是系统文件出问题。以管理员身份打开 PowerShell:

Terminal window
sfc /scannow

扫描完成后重启电脑,再回到第 1 步重新验证。

确认 Windows Defender 防火墙允许 RDP:

Terminal window
Get-NetFirewallRule -DisplayGroup "远程桌面" | Format-Table DisplayName, Enabled

如果某条规则的 EnabledFalse,启用它:

Terminal window
Enable-NetFirewallRule -DisplayGroup "远程桌面"