反向接入技术揭秘:Agent Connect 如何让手机安全远程控制 AI 终端?
当你用手机远程控制电脑上的 Claude Code 时,数据是怎么安全到达的?为什么有的方案需要公网 IP, 有的不需要?"反向接入"到底是什么技术?本文为你一一拆解。
1. 远程控制的根本难题:防火墙与 NAT
要理解反向接入,首先要知道为什么"远程控制"这件事本身在今天的网络环境中这么困难。
当你坐在电脑前,用手机去控制另一台电脑时,本质上就是两台设备之间建立一条网络连接。 但在现实世界中,这条连接会遇到两个障碍:
🧱 障碍一:NAT(网络地址转换)
绝大多数家庭和公司网络中的电脑,使用的都是内网 IP 地址(如 192.168.x.x)。 内网 IP 在外网中不可直达。好比你的手机号只有公司内部分机号,外线拨不进来。
🔥 障碍二:防火墙
即使你的电脑有公网 IP,防火墙也会默认阻止所有入站连接。 公司网络、云服务商的安全组,都会严格限制入站流量——这是最基本的安全策略。
简单说:你的电脑可以"走出去"联网,但外面的人"走不进来"找你的电脑。这就是反向接入要解决的核心问题。
2. 传统方案:端口映射与 VPN
面对 NAT 和防火墙的限制,传统上有两种经典解法:
方案 A:端口映射(Port Forwarding)
在路由器上设置端口映射,将公网的某个端口指向内网电脑的 SSH 端口(22)。
公网 IP:2222 ──→ 路由器端口映射 ──→ 内网电脑:22 (SSH)风险:SSH 端口暴露在公网上,24 小时被扫描器探测。一旦 SSH 服务有漏洞或密码泄露,整台机器就被攻破。
方案 B:VPN(虚拟专用网络)
在公司/家庭网络搭建 VPN 服务器,手机连入 VPN 后获得内网 IP,然后像局域网一样直连电脑。
手机 ──→ VPN 服务器(公网)──→ 内网电脑:22 (SSH)问题:设置复杂,VPN 服务器本身也需要公网 IP 暴露在外。VPN 一旦连上,手机就能访问整个内网,安全边界模糊。
这两种方式的共同缺陷是:必须在防火墙上开一个"洞"——要么开放入站端口,要么运行一个公网可达的 VPN 服务器。 这正是反向接入要消除的风险。
3. 反向接入:从"被连接"到"主动连"
反向接入(Reverse Access)的核心思想很简单:不让外部连接进来,而是让内部主动连出去。
具体来说,被控机器上运行一个 Agent 程序,这个 Agent 主动发出站 WebSocket 连接到一台云端的 Hub 服务器。 手机浏览器也连接到同一个 Hub 服务器。Hub 在中间做消息转发——手机发的指令转给 Agent,Agent 的输出转回手机。
架构示意图
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ 手机浏览器 │ WSS │ 云端 Hub │ WSS │ 被控电脑 │
│ (控制端) │◄──────►│ (yanlin- │◄──────►│ Edge Agent │
│ │ │ ai.cn) │ │ (主动出站) │
└─────────────┘ └──────────────┘ └──────────────┘
│
┌────────┴────────┐
│ 无入站端口 │
│ 穿透 NAT/防火墙│
│ 出站 WSS 连接 │
└─────────────────┘关键点在于:被控电脑只主动"走出去",从不被动"等人进来"。
- Edge Agent 启动时,通过 出站 WebSocket Secure(WSS) 连接 Hub
- 这个连接和普通浏览器访问 HTTPS 网站没有本质区别——防火墙通常允许出站连接
- 被控电脑不需要开放任何入站端口,路由器不需要端口映射
- 即使被控电脑在公司内网、家庭 NAT 后面,都可以正常工作
这种模式在网络安全领域叫做 "零信任远程访问" 或 "出站连接模式", 和 Cloudflare Tunnel、ngrok 等工具采用类似的思想。
4. Agent Connect 的反向接入架构详解
了解了反向接入的大致原理后,我们再深入看 Agent Connect 的具体实现。 整个系统分为三层:
第一层:Hub 服务器(云端)
Hub 是 Agent Connect 的核心中继。它同时维护两类 WebSocket 连接:
- 与 Agent 的连接:被控机器上 Edge Agent 的持久出站 WSS 连接
- 与控制台的连接:浏览器(手机/电脑)的 WebSocket 连接
Hub 不存储任何代码或数据,只做实时消息转发。所有连接使用 WSS(WebSocket Secure),即 TLS 加密的 WebSocket,和 HTTPS 同级别的加密保护。
第二层:Edge Agent(被控电脑)
Edge Agent 是跑在被控电脑上的 Node.js 程序。它的工作:
- 启动时建立到 Hub 的出站 WSS 连接
- 通过 node-pty 启动本地终端进程(Shell / Claude Code / Codex)
- 将终端输出实时转发给 Hub → 手机浏览器
- 接收手机浏览器发来的指令,注入到终端进程
- 管理会话生命周期(启动、保活、重连、销毁)
第三层:Web 控制台(手机浏览器)
手机浏览器访问的 Web 控制台,提供完整的操作界面:
- 机器列表:查看所有在线的被控机器
- 终端窗口:实时显示 Claude Code / Codex / Shell 的输出
- 输入区域:发送命令和 prompt
- 会话管理:查看历史会话、重进续聊
数据传输流程
当你在手机上向 Claude Code 发送一条消息时,数据流如下:
- 你在手机浏览器输入消息,点击发送
- 浏览器通过 WSS(WSS over TLS) 将消息发送到 Hub
- Hub 根据机器 ID 找到对应的 Edge Agent 连接,转发消息
- Edge Agent 通过 WSS(也是一个出站连接)接收消息
- Agent 将消息注入到本地的 Claude Code 进程中
- Claude Code 开始处理,输出实时流式结果
- Agent 捕获输出,通过 WSS 发回给 Hub
- Hub 转发回手机浏览器
- 浏览器实时渲染,打字机效果逐字显示
全程 TLS 加密,整个链路和你访问网上银行一样安全。
5. 安全性对比:反向接入 vs 传统方案
| 安全维度 | 端口映射 (SSH) | VPN | 反向接入 (Agent Connect) |
|---|---|---|---|
| 暴露入站端口 | ✅ 是(SSH:22 暴露公网) | ⚠️ VPN 服务器暴露 | ❌ 零入站端口 |
| 被扫描风险 | 高(24h 被扫描器探测) | 中(VPN 端口暴露) | 无(无端口可扫) |
| 传输加密 | SSH 加密 | VPN 加密 | TLS (WSS) 加密 |
| 内网横向移动风险 | 高(被攻破后进入内网) | 高(VPN 连上后能访问整个内网) | 无(Agent 只连接指定 Hub) |
| 身份认证 | SSH Key / 密码 | VPN 证书 / 密码 | Token 授权 + 企业账号 |
| 审计日志 | 通常无 | 有限 | 会话历史可追溯 |
| 防火墙配置 | 需要修改路由器 | 需要搭建 VPN | 不需要任何配置 |
为什么反向接入更安全?
🔒 攻击面最小化
反向接入模式下,被控机器没有任何入站端口。没有端口 = 没有东西可以被扫描 = 没有远程漏洞可以被利用。攻击者甚至不知道这台机器的存在。
🚫 无横向移动风险
即使 Hub 被攻破,攻击者也只能控制到 Hub 到 Agent 的 WSS 连接,无法通过 Agent 进入被控机器的内网。Agent 只做终端转发,不做网络路由。
🔐 企业级授权
Agent 注册需要 Enrollment Token,控制台登录需要企业账号认证。双重保障确保只有授权的机器和用户能接入。
📋 会话可追溯
所有远程会话都有历史记录,可以追溯谁在什么时间控制了哪台机器、执行了什么操作。这在传统 SSH/VPN 方案中很难做到。
6. 企业级安全特性
对于企业用户,Agent Connect 还提供了额外的安全功能:
🏢 多租户隔离
每个企业的机器和数据完全隔离,不同企业之间的机器互不可见。
🔑 Enrollment Token
Agent 注册需要携带企业专属 Token,防止未经授权的机器接入。
👥 团队权限管理
支持多用户账号,可以精细控制谁有权访问哪些机器。
📊 操作审计
完整的会话记录和操作日志,满足企业合规审计需求。
7. 常见问题
反向接入和 ngrok/Cloudflare Tunnel 有什么区别?
核心原理相似——都是通过出站连接建立隧道。但 Agent Connect 是专门为 AI 编程终端设计的,多了会话管理、Claude Code/Codex 原生集成、多机器控制台等功能。ngrok/Cloudflare Tunnel 是通用隧道工具,需要自己搭建终端环境。
Hub 能看到我的代码内容吗?
Hub 只做实时消息转发,理论上可以访问传输中的数据。但所有传输都经过 TLS 加密,且 Agent Connect 的 Hub 只转发数据不存储数据。如需更高安全级别,可以选择支持端到端加密的方案(如 GhostTerm 的 P2P 模式)。
Agent 连接断了怎么办?
Agent 会自动重连。如果网络中断时间较长(超过 10 分钟),Hub 会标记机器为离线。网络恢复后 Agent 会自动重新注册,机器重新变为在线状态。
企业内网代理限制能使用吗?
可以。Agent 使用标准的 WSS 协议(WSS over TLS),通常能通过企业代理。如果代理有特殊要求,可以通过环境变量配置自定义代理设置。
我的代码会传到第三方服务器吗?
在 Agent Connect 方案中,代码始终在被控机器上本地处理。Claude Code 和 Codex 的 AI 处理也是在被控机器上调用本地 CLI 完成的。传输到 Hub 的只有终端的输入输出流,而不是源代码文件本身。