返回列表

博客

远程 AI 编程安全最佳实践

当 AI 智能体拥有代码库的写权限,而你通过网络控制它时,安全决策至关重要。以下是做出正确决策的方法。

发布于 标签: security / guide / best-practices / seo
博客

继续查看该栏目下的产品与工程更新。

浏览此分类

远程运行 AI 编程智能体会引入桌面使用时不存在的安全考量。智能体可以访问你的代码库、执行命令、修改文件。手机到 Mac 之间的网络路径可能跨越不受信任的区域。

这不是避免远程 AI 编程的理由,而是理解威胁模型并做出明智决策的理由。大多数风险都可以通过简单直接的实践来管理。

威胁模型

在深入了解缓解措施之前,先明确你要保护什么:

资产:

  • 你的源代码(知识产权、配置文件中的密钥)
  • 你的开发环境(执行命令的能力)
  • Mac 上的 git 凭据和 SSH 密钥
  • 你的代码使用的服务 API Key

威胁源:

  • 扫描互联网寻找暴露服务的机会主义攻击者
  • 共享 WiFi 上的网络窃听者
  • 捡到或偷走你手机的人
  • 你使用的工具的供应链攻击

攻击面:

  • 手机与 Mac 之间的网络连接
  • 认证机制
  • AI 智能体在文件系统上的权限
  • Mac 上运行的服务器进程

第 1 层:网络安全

使用加密连接

局域网模式(ws://): 流量未加密。在你的家庭 WiFi 上这是可以接受的,因为流量不会离开本地网络。在共享或公共网络上则不可接受。

Cloudflare Tunnel(wss://): 流量使用 TLS 加密。任何跨越互联网的连接都应使用此方式。隧道在你的手机和 Cloudflare 边缘之间加密,也在 Cloudflare 和你的 Mac 之间加密。

经验法则: 如果你在自己控制的网络上(家庭、办公室),局域网模式就够了。其他任何地方,使用 Cloudflare Tunnel。

不要暴露原始端口

永远不要在路由器上将端口 8765(或任何端口)转发到你的 Mac 来进行 Tactic Remote 访问。这会将你的服务器直接暴露在互联网上,没有任何中间保护。

Cloudflare Tunnel 完全避免了这个问题——Mac 主动向 Cloudflare 发起出站连接,无需入站端口。

Mac 应用包含防火墙检测功能,会警告你防火墙配置问题。保持 Mac 防火墙启用并开启隐身模式。

第 2 层:认证

API Key 配置

Tactic Remote 使用 API Key 认证 WebSocket 连接:

  • 局域网连接: API Key 可选。你的本地网络充当信任边界。
  • Cloudflare Tunnel 连接: API Key 必须设置。服务器会拒绝未认证的连接。

API Key 在 WebSocket 握手期间通过 Sec-WebSocket-Protocol 头传输。在 wss:// 下,此过程是加密的。

API Key 最佳实践

  1. 使用生成的密钥。 Mac 应用会生成一个 32 字符的随机密钥。这比你手动选择的任何密码都更强。
  2. 安全传输。 使用 QR 码功能将密钥当面传输到你的 iPhone。不要通过邮件、Slack 或短信发送。
  3. 定期轮换。 如果你怀疑密钥可能已泄露,在 Mac 应用中生成新密钥并更新你的 iPhone。
  4. 不要重复使用。 不要将 Tactic Remote 的 API Key 用于其他服务。它是单一用途的凭据。

速率限制

服务器包含速率限制中间件,会减慢重复的认证失败尝试。这可以防止对 API Key 的暴力破解攻击。使用 32 字符的随机密钥,暴力破解在计算上是不可行的,但速率限制增加了纵深防御。

第 3 层:访问控制

路径限制

Tactic Remote 支持 CLAUDE_REMOTE_ALLOWED_PATH 环境变量,用于限制 Claude Code 可以访问的目录。将其设置为你的代码目录:

export CLAUDE_REMOTE_ALLOWED_PATH=/Users/you/code

如果不设置,Claude Code 可以访问你的整个主目录(其默认行为)。路径限制可以在出现问题时缩小影响范围。

Claude Code 权限

Claude Code 本身有权限系统。Tactic Remote 中有两种模式可用:

  1. 标准模式: claude —— Claude Code 在执行危险操作前会请求审批(文件删除、运行不熟悉的命令)
  2. 跳过权限模式: claude --dangerously-skip-permissions —— Claude Code 无需询问直接执行。更快,但没有安全网。

远程使用建议: 始终使用标准模式。审批提示在远程使用时尤其有价值,因为你可以从手机上查看建议的操作并点击 Y/N。跳过权限意味着 Claude 可以在你不知情的情况下做任何事——在你不在旁边时很危险。

服务端校验

Tactic Remote 服务器会校验所有传入的命令。lib/validators.js 模块检查:

  • 命令格式正确性
  • 路径遍历尝试
  • 输入长度限制

lib/execSafe.js 模块用安全检查包装命令执行。这些不能替代 Claude Code 自身的权限系统,但在服务器层面增加了一道防御。

第 4 层:物理和设备安全

Mac 安全

你的 Mac 是执行引擎。如果有人获得物理访问权限:

  • 他们可以访问你所有的代码
  • 他们可以直接控制 Claude Code
  • 他们可以从 Mac 应用中读取 API Key

缓解措施:

  • 启用 FileVault(全盘加密)
  • 使用强登录密码
  • 启用自动锁屏(5 分钟或更短)
  • 如果在离开 Mac 时运行服务器,确保 Mac 位于物理安全的位置

iPhone 安全

你的 iPhone 是控制界面。如果有人访问了你解锁的手机:

  • 他们可以通过 Tactic Remote 向你的 Mac 发送命令
  • 他们可以读取你的连接设置,包括 API Key

缓解措施:

  • 启用 Face ID 或强密码
  • 保持 iOS 更新
  • 不要将手机解锁后放在无人看管的地方

第 5 层:操作安全

提示中不要包含什么

从手机向 Claude Code 发送指令时,请记住你的提示会成为对话上下文的一部分。不要包含:

  • 提示中的密码或 API Key("使用 API Key abc123 来...")
  • 数据库凭据
  • 用户或客户的个人信息

改为通过环境变量名引用密钥:"使用 STRIPE_SECRET_KEY 环境变量中的 API Key。"

审批前先审查

当 Claude Code 请求审批(Y/N 提示)时,在点击 Y 之前先阅读它想要做什么。这在远程使用时尤为重要,因为你可能正在分心。常见的审批请求:

  • 文件删除
  • 运行 shell 命令
  • 安装软件包
  • 修改配置文件

快速审查只需几秒钟,就能防止意外操作。

监控事件日志

Mac 应用维护着所有 hook 事件的事件日志。定期查看它,确认只有你的会话和命令出现在日志中。意外的活动可能表示未授权的访问。

威胁场景与响应

场景:手机丢失或被盗

风险: 攻击者使用你保存的连接设置访问 Tactic Remote。

响应:

  1. 从你的 Mac 上立即生成新的 API Key(这会使旧密钥失效)
  2. 可选择停止服务器,直到情况解决
  3. 如果无法找回手机,远程擦除手机

场景:API Key 泄露

风险: 有人获得了你的隧道 URL 和 API Key。

响应:

  1. 在 Mac 应用中生成新的 API Key
  2. 如果隧道 URL 也暴露了,重启 cloudflared(它会获得一个新的随机 URL)
  3. 检查事件日志中是否有未授权的会话活动
  4. 查看最近的 git 历史是否有意外的提交

场景:不受信任的 WiFi 网络

风险: 网络窃听、中间人攻击。

响应: 这在设计上已被处理。Cloudflare Tunnel 使用 TLS,因此流量是加密的。即使在被攻破的网络上,攻击者看到的也是加密的 WebSocket 帧,而不是你的终端内容。

场景:Claude Code 进行了意外修改

风险: AI 智能体修改了你没有预期的内容。

响应:

  1. 从手机上使用 Ctrl+C 中断 Claude
  2. 查看更改:在会话中运行 git diff
  3. 如需回退:git checkout . 或 git reset
  4. 这就是 git 版本控制存在的意义——它是你的安全网

安全检查清单

出发远程工作前:

  • Cloudflare Tunnel 已启用(用于互联网访问)
  • API Key 已设置(32+ 字符随机字符串)
  • API Key 通过 QR 码传输(不通过互联网)
  • Mac 防火墙已启用
  • Mac FileVault 已启用
  • Mac 已设置自动锁屏
  • iPhone 密码/Face ID 已启用
  • Claude Code 运行在标准模式(非 --dangerously-skip-permissions)
  • CLAUDE_REMOTE_ALLOWED_PATH 已设置以限制文件系统访问
  • 开始工作前有近期的 git commit 作为恢复点

立即体验 Tactic Remote

用手机远程控制编程 Agent

连接 Mac、Windows 或 Linux 电脑上的 Claude Code、Codex 等 Agent,在 iPhone 或 iPad 上查看进展并发送下一条要求。