大数跨境

别再把 API Key 贴进 Cursor 提示框了

别再把 API Key 贴进 Cursor 提示框了 自贡诺粤众创供应链
2026-09-15
3
导读:一个 GPG 加密文件 + 一条口令,收好服务器上所有密钥上个月帮朋友排查一件怪事:他的 OpenAI 账单突


一个 GPG 加密文件 + 一条口令,收好服务器上所有密钥

上个月帮朋友排查一件怪事:他的 OpenAI 账单突然多了几千元陌生调用。翻日志、查 SSH 历史、调 CDN 日志,最后定位到一个让人哭笑不得的原因。

他在 Cursor 里调试一段调用代码时,把 API Key 完整贴进提示框,问 AI「为什么返回 401」。

AI 编辑器很方便,但它不是一个隔离的开发环境。你以为只是让 AI 帮你看一眼报错,密钥其实已经离开你的电脑,进入了模型提供商的请求日志、检索缓存、可能的训练数据流。一旦过了你的掌控,没法保证它去了哪里、被谁看过、存了多久

这不是 Cursor 一家的问题。Claude Code、Copilot、Continue、Windsurf,都存在类似的边界。

我做 envvault 的初衷,就是解决这一类问题。

密钥泄漏的五种经典死法

痛点分两种。一种是你把密钥交给 AI 助手,刚才说的那种。另一种更隐蔽:密钥散落在 .env、docker-compose.yml、bash_history、聊天截图、Git 仓库、网盘备份里。它们从来没离开过你的电脑,但谁都能拿到

整理 5 个最常见的泄漏场景:

  • 明文 bash 历史
    :手打的 curl 鉴权头会永久留在 ~/.bash_history
  • .env 文件权限过宽
    :644 权限下,任何能读目录的进程或用户都能拿走
  • 密钥贴进聊天或截图
    :落在日志、剪贴板、云端,传播路径不可控
  • 提交进 Git 仓库
    :即使删了 commit,history 里还在,被扫描机器人几小时内抓到
  • 备份整个 home 到网盘
    :密钥跟着一起上云,泄漏面随之扩大

我见过最夸张的一个案例:某团队把 .env 提交进公开 GitHub 仓库,删掉 commit 后没清理 history,被自动化扫描机器人 6 小时内抓到,密钥被用来挖矿两天。

envvault:一个文件,一条口令

envvault 想做的事很直接:把散落的密钥收进一个 GPG 加密文件,用一条口令统一管理,明文永远不落盘

整个仓库只有一个核心目录:


~/.secrets/
  ├── env.gpg    # 唯一真源(AES-256 加密)
  └── vault.sh    # 门禁工具


零依赖。GPG 预装在几乎所有 Linux 发行版,没有守护进程、没有数据库、没有网络依赖,备份就是一个文件。

3 步上手


① 安装

git clone https://gitee.com/nyzcgyl_0/envvault.git
cd envvault && ./install.sh

脚本会把 vault.sh 装到 ~/.secrets/

② 初始化与写入

~/.secrets/vault.sh init
~/.secrets/vault.sh set OPENAI_API_KEY
~/.secrets/vault.sh set DATABASE_URL

口令和值都是静默输入,不会进 bash 历史

③ 上锁

~/.secrets/vault.sh lock

磁盘上再也没有明文密钥


日常使用时,会话级加载一次口令就能在当前终端里随便用:


eval "$(~/.secrets/vault.sh unlock)"
curl -H "Authorization: Bearer $OPENAI_API_KEY" \
    https://api.openai.com/v1/models


CI 自动化场景下用环境变量喂口令即可,不需要任何交互。注意:unlock 的结果只 eval 到内存,绝不重定向到文件,否则等于把明文重新落盘。

诚实的边界

envvault 防的是静态泄漏,比如 bash 历史、误提交、备份外泄、进程读取。

键盘记录器、root 实时内存抓取、口令主动外泄这三种场景,它管不了。口令忘了等于数据永久丢失,请写进纸质记录或离线密码管理器。

它也只适合单人小团队。需要多人审批、审计日志、密钥自动轮换的企业场景,应该上 HashiCorp Vault 或 SOPS+KMS。

几个我比较满意的设计细节

  • 口令派生用 SHA-512 迭代 6500 万次,暴力破解成本极高
  • 口令错误会明确报错并返回非零退出码,不会静默成功
  • 改口令时如果新旧一样会被直接拒绝
  • 临时明文用 mktemp + chmod 600 + shred 兜底删除
  • 加密写盘失败会用 .tmp 加原子 mv 避免损坏原库


仓库地址

https://gitee.com/nyzcgyl_0/envvault


觉得有用欢迎点赞鼓励
想交流可以加我的开发者群(公众号回复「envvault」进群)


【声明】内容源于网络
0
0
自贡诺粤众创供应链
成为地域性最具竞争力的整合型供应链综合服务商。共享共赢,共享共生的商业生态圈。
内容 30
粉丝 0
自贡诺粤众创供应链 成为地域性最具竞争力的整合型供应链综合服务商。共享共赢,共享共生的商业生态圈。
总阅读29
粉丝0
内容30