# RDP-FIDO-GATE — 安装与配置（分步说明）

安全的远程桌面（RDP），带有**强制性的 FIDO2/WebAuthn 硬件密钥门禁**。RDP 端口
始终被防火墙封锁，只有在你触碰密钥之后，才会**仅为你的 IP 打开约 90 秒**。需要 Windows 10 1903+（WebAuthn + Windows Firewall）。没有托管服务——你需要
自行下载并安装。

两个组件及其端口：

| 组件 | 运行位置 | 端口 |
|-----------|---------------|-------|
| **Gate** | 目标机器（你要连接的 PC） | **7440/TCP** — 控制 + FIDO 确认；**3389/TCP** — RDP（按需开放） |
| **Client** | 你的机器 | 到主机 7440 和 3389 的出站连接 |
| **FIDO Stream**（可选） | 主机 | **7441/UDP** — 低延迟模式的视频、音频和输入；按会话开放，仅对你的 IP |

---

## Step 1. Host — 安装 gate

1. 在目标机器上下载 **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)**，运行并选择 **Host**（Windows 会请求管理员确认）。它会安装 gate；你也可以直接下载 **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)**。
2. 安装程序会启用 Remote Desktop（含 NLA），将 TLS 证书绑定到 gate 端口 **7440**，并注册和启动 gate 服务。RDP 端口照常工作——只有在注册第一个密钥时才会关闭。
3. 安装程序的最后一页会显示**一次性密钥注册代码**（15 分钟内有效，带"复制代码"按钮），以及本机地址和 gate 端口。
4. **记下：** 主机地址（名称 / 公网 IP）、端口 **7440** 和**代码**。如果代码过期，请以管理员身份运行 `RdpFidoGate.exe code`。

静默安装（例如通过管理系统）：`msiexec /i RdpFidoGate-Setup.msi /qn`

使用组合安装程序的无人值守安装：`RdpFido-Setup.exe host`

---

## Step 2. 路由器端口转发（如果主机位于 NAT/路由器之后）——互联网访问所必需

如果你**从互联网**连接，且目标机器位于家庭/办公室路由器之后，你必须
在路由器上将**两个端口转发**到主机的 LAN 地址。否则客户端既无法到达
gate，也无法到达 RDP。

转发（在路由器管理界面中的 Port Forwarding / Virtual Servers / NAT）：

| 外部端口 | 协议 | → 内部 IP（主机 LAN） | 内部端口 |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x`（主机 LAN IP） | **7440** |
| **3389** | TCP | 同一主机 LAN IP | **3389** |
| **7441** | UDP | 同一主机 LAN IP | **7441** — 仅当你从互联网使用 FIDO Stream 时 |

步骤：
1. 查找主机的 LAN IP：`ipconfig` → "IPv4 Address"（例如 `192.168.1.50`）。
2. 为主机**保留该地址**（在路由器中按 MAC 进行 DHCP 保留）——否则它可能会改变。
3. 在路由器中：**Port Forwarding / Virtual Servers** → 添加表中的两条规则
   （外部端口 = 内部端口，协议 TCP，内部 IP = 主机 LAN）。
4. 查找你的**公网 IP**（在主机上打开 `https://api.ipify.org`，或路由器的 "WAN IP"）。如果你的
   IP 是**动态的**，请设置 **DDNS**（在路由器中或通过 no-ip/DuckDNS），并使用 DDNS 名称代替 IP。

> 安全性：只有 gate（7440）对外监听。RDP（3389）在你用密钥确认之前
> 从外部是**关闭的**——确认后它会狭窄地打开，仅对你的 IP，约 90 秒。转发 3389 本身
> 并不授予访问权限；它只是让那个临时"窗口"能够穿过路由器。

---

## Step 3. Client — 安装并注册

1. 安装客户端：运行 **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** 并选择 **Client**（按用户安装，无需管理员权限），或直接使用 **[RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi)**。
2. 通过 AccountServer 进行**激活**：输入你的电子邮件 → 一个代码会邮寄给你 → 输入它。
   激活宽限期为 14 天；免费版 = 最多保存 10 个会话，付费版 = 无限制。
3. **添加会话：**
   - 地址：主机的公网 IP 或 DDNS 名称（来自 Step 2），如果你在同一网络中，则为 LAN 地址。
   - Gate 端口：**7440**。
   - 协议：**RDP (mstsc)** 或 **FIDO Stream** — 见 Step 5。
   - 输入来自 Step 1 的**一次性代码**并**注册你的 FIDO2 密钥**（触碰）。

---

## Step 4. 连接

选择会话 → **触碰密钥** → gate 验证它并**为你当前的 IP 打开 3389 约
90 秒** → 客户端启动 `mstsc` 并自动为你连接。每 30 秒 gate 会重新施加
封锁，因此该窗口保持狭窄且限定于 IP。

---

## Step 5（可选）. FIDO Stream — 面向游戏和视频的低延迟模式

FIDO Stream 是 RDP 之外的第二种连接模式：主机的屏幕、音频和你的输入通过 UDP 传输并使用硬件编码，因此局域网内的"点击到成像"延迟约为 25–45 ms。同样的密钥触碰即可打开它；gate 仅为你的 IP、仅在该会话期间开放 UDP 7441。无需额外安装任何东西：主机代理位于 gate 内，查看器位于客户端内（主机上的 gate 版本需为 1.15 或更新）。

1. 在会话设置中选择**协议：FIDO Stream（游戏，低延迟）**。
2. 第一次尝试时将设置保持为**自动**。各项含义：
   - **平衡** — 一个滑块，从**网络差**（更低分辨率、HEVC、更多纠错）到**电脑弱**（仅硬件编码器、最快预设、原生分辨率）；**自动调节平衡**会将其朝当前瓶颈的方向移动。
   - **主机声音**和**将麦克风发送到主机** — 双向声音。
   - **启动时捕获鼠标（游戏）** — 射击游戏所需的相对鼠标移动。
   - **连接** — **自动（穿透 NAT）**、**本机呼叫主机**（需要将 7441/UDP 转发到主机）或**主机呼叫本机**（当你的 PC 有公网地址时）。
   - **编码器（主机）** — 自动 / NVIDIA NVENC（直接）/ 硬件（任意显卡）/ 软件（CPU）；**解码器** — 自动 / 硬件（显卡）/ 软件（CPU）。
3. 像往常一样连接：选择会话 → 触碰密钥 → 流窗口打开。

流窗口中的快捷键：**Ctrl+Alt+Home** 捕获/释放鼠标，**Ctrl+Alt+Enter** 切换全屏，**Ctrl+Alt+End** 断开连接。

要求：两端均为 Windows 10 1903+；为获得最低延迟，主机需有带硬件编码器的 GPU（NVIDIA、Intel 或 AMD）。仅当客户端有 GPU 解码器时才使用 HEVC；否则流会自动回退到 H.264。主机上的诊断（以管理员身份）：`RdpFidoGate.exe stream encoders` 列出可用的编码器，`RdpFidoGate.exe stream encoders --bench` 逐一测量，`RdpFidoGate.exe stream selftest` 在无网络的情况下运行捕获 → 编码 → 解码。详细信息写入主机上的 `gate.log` 和客户端上的 `client.log`。

---

## 检查与故障排除

- 从客户端：`Test-NetConnection <public-ip-or-DDNS> -Port 7440` → 应为
  `TcpTestSucceeded : True`。如果为 `False`——则端口 7440 未被转发，或主机防火墙将其阻挡。
- 端口 **3389 在你用密钥确认之前从外部是关闭的**——这是预期的（在触碰之前不要测试它）。
- "会话无法打开"：请检查 1) gate 服务在主机上正在运行，2) **两个**端口
  都已在路由器上转发到主机当前的 LAN IP，3) 公网 IP 没有改变（若为动态，请使用 DDNS）。
- 一个路由器后有多台主机：使用不同的外部端口（例如 host-2 → 外部 7441→7440，
  3390→3389），并在客户端会话中输入这些外部端口。
- FIDO Stream 无法启动：主机上的 gate 必须为 1.15 或更新版本（客户端会提示），并且对于互联网访问，要么 7441/UDP 已转发到主机，要么会话使用**主机呼叫本机**。

---

## 卸载

在主机上，以管理员身份：`powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
（移除服务，恢复防火墙规则）。然后可选择性地移除路由器上的端口转发规则。
