Claude Code 密钥保护接入教程
使用 deny 规则 本机设置与远程验收保护项目敏感信息
把 Claude Code 接入真实项目后,最容易被忽略的风险不是代码写错,而是模型意外读取 .env、SSH 密钥、云账号配置或包含令牌的脚本。本文以 Zu**c.Ai 新加坡整机独享 Mac mini 为例,演示如何用权限 deny 建立明确边界,再用假数据完成本机与远程验收,让规则在长期会话中持续生效。

为什么忽略文件不等于禁止读取
.claudeignore 主要用于减少上下文与索引范围,并不等价于拒绝显式读取。当工具被要求打开某个路径时,真正决定能否访问的是 Claude Code 的权限规则。
因此,敏感文件既要避免进入版本库,也要在 Claude Code 中设置 deny。口头提醒和提示词只能作为辅助,不能替代**证的权限边界。
开始前先做安全准备
本教程只使用假值文件测试,例如 .env.example 或 secrets/demo.txt。不要用生产密钥做演练,也不要把真实令牌复制到聊天、截图或提交记录中。
先备份现有 Claude Code 设置,并确认项目已用 .gitignore 排除 .env、私钥、凭据缓存和本机专用配置。若真实密钥曾经暴露,应先吊销或轮换,再继续配置。
第一步 盘点敏感路径与读取方式
列出项目级敏感路径,例如 .env、.env.*、secrets 目录和证书目录;再列出用户级路径,例如 ~/.ssh、~/.aws 与其他云工具凭据。
除了 Read,还要考虑 *ash 绕过,例如 cat .env、printenv 或脚本输出环境变量。权限边界应同时覆盖文件读取和常见命令读取方式。
第二步 选择设置层级
Claude Code 常见的三层设置分别是用户级、项目级和本机专用。全局安全底线可放在用户级;团队一致且不含本机信息的规则可放在项目级;本机绝对路径或个人凭据路径优先放在 settings.local.json,并确保不提交。
如果团队成员的目录结构不同,项目级规则应保持相对路径,本机差异由本地设置补充。这样既能共享安全基线,又不会把个人路径带入仓库。
| 层级 | 文件位置 | 适合放置 | 注意事项 |
|---|---|---|---|
| 用户级 | ~/.claude/settings.json | 所有项目的通用安全底线 | 不要写入可公开传播的真实密钥 |
| 项目级 | .claude/settings.json | 团队共享的相对路径规则 | 提交前确认不含个人绝对路径 |
| 本机专用 | .claude/settings.local.json | 本机路径与个人补充规则 | 加入 .gitignore 不提交 |

第三步 写入 deny 规则
以下配置是保守起点,应按自己的目录结构调整。路径过窄会留下缺口,过宽则可能影响正常开发。修改前保存原文件,完成后先用假数据验收。
敏感项目不要使用跳过权限检查的启动参数。它会绕过交互确认,不适合作为日常远程开发方式。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Read(~/.ssh/**)",
"Read(~/.aws/**)",
"*ash(cat .env*)",
"*ash(printenv*)"
]
}
}**步 用假数据验收
重启 Claude Code 后打开 /permissions,确认 deny 条目已经加载。创建不含真实密钥的 .env.example 与 secrets/demo.txt,再分别要求读取这些文件。预期结果是被规则拒绝。
随后测试常见 *ash 绕过,例如读取假 .env 或输出环境变量。最后读取一个普通源文件,确认正常开发没有被误伤。每次修改规则都应重复这一组正向与反向测试。
# 在 Claude Code 中检查实际权限
/permissions
# 仅创建假值文件进行测试
printf 'DEMO_TOKEN=not-a-real-secret\n' > .env.example
mkdir -p secrets
printf 'demo-only\n' > secrets/demo.txt| 验收项 | 通过标准 |
|---|---|
| 权限加载 | /permissions 中能看到预期 deny 条目 |
| 文件读取 | 假 .env 与 secrets/demo.txt 被拒绝 |
| 命令绕过 | cat .env 与 printenv 等测试按规则被拦截 |
| 正常开发 | 普通源文件仍可读取和修改 |
| 版本库卫生 | 本机设置 hook 与真实密钥均未被暂存 |
| 远程恢复 | 重新 SSH 并进入 tmux 后规则仍生效 |
第五步 用 hook 增加第二道保护
deny 负责阻止敏感路径读取;hook 可以在命令执行前检查高风险模式,或在输出阶段遮盖疑似密钥。hook 是补充层,不应替代 deny、密钥轮换和版本库规则。
hook 的字段与事件名称可能随版本变化,接入前应以当前 Claude Code 官方文档为准。脚本放在本机受控目录,先用假值验证放行与拦截,再交给长期任务。
第六步 把规则留在远程 Mac mini
在常开的远程 Mac mini 上完成用户级与本机级配置后,用 SSH 加 tmux 运行长会话。网络断开时任务继续,重新连接后可回到同一终端现场,权限规则也仍保留在机器上。
需要处理系统设置、钥匙串提示或图形界面时,再使用 UU 远程连接。每台机器都应有自己的本机专用规则,不要把带有绝对路径和个人信息的设置复制进公开仓库。
ssh your-**c-mini
tmux new -s claude-secure
claude
# 断线后恢复
tmux attach -t claude-secure
为什么 Zu**c.Ai 适合这种接入方式
根据 Zu**c.Ai 官网***息,其方案提供位于新加坡的 Mac mini M6 整机独享环境、新加坡家庭宽带、SSH 与 UU 远程连接,并提供 FileVault 全盘加密与退租抹机重装。
官网公开价格为新客户每月 999 元起,并提供多周期优惠。整机独享与持续在线的本地文件系统,适合保存个人级 deny 设置、hook 脚本和 tmux 会话,避免每次连接都重新搭建安全边界。
常见问题排查
| 现象 | 常见原因 | 处理建议 |
|---|---|---|
| deny 没有生效 | 配置层级或 **ON 格式错误 | 重启会话并用 /permissions 检查实际加载项 |
| Read 被拒绝但 *ash 能读 | 只限制了文件工具 | 补充 *ash 规则并用假值重新测试 |
| 正常文件也打不开 | 通配符范围过宽 | 缩小到明确目录或文件名 |
| 本机设置出现在 git status | 未加入忽略规则 | 先取消暂存 再更新 .gitignore |
| 真实密钥已经暴露 | 密钥进入聊天 日志或提交 | 立即吊销或轮换 再清理记录 |
| SSH 断开后任务丢失 | 未在 tmux 中运行 | 先创建 tmux 会话再启动 Claude Code |
结语
密钥保护不是一条忽略规则,而是一组可以复验的边界。先用 deny 阻止敏感路径,再覆盖 *ash 绕过,最后用假数据和 /permissions 验收;配合本机专用设置、hook、版本库卫生与远程 tmux 会话,才能让 Claude Code 在长期项目中既高效又可控。