跳到正文
博客园· chingho·· 5 小时前AI 评分60

keypaste:用 .NET 开源库为 AI 智能体管理密钥

别再把密钥贴给 AI 了:用这个 .NET 开源库做你的“密钥安全管家” - chingho

AI 导读

keypaste 是一个 .NET 开源密钥管理工具,把登录信息和项目密钥存进本地 KDBX 保险库,格式与 KeePass 兼容,不联网、无账号。AI 智能体通过 MCP 请求某个条目的某个字段时需附上用途,由用户批准,每次请求写入带哈希链的审计日志。当前可用版本为 v0.3.0 CLI,桌面端尚未发布,共享链接和 CI 作用域令牌留待下一版。

正文

让 AI 帮你跑命令、连数据库,密钥安全怎么办?

写进 .env,它顺手读进上下文;贴进聊天框,等于发了一份群公告;不给,它什么也干不了。

keypaste 就是冲着这个尴尬来的。它把登录信息和项目的密钥收进一个本地 KDBX 保险库,格式和 KeePass 一样——同一个文件,扔进 KeePassXC 也能打开、能改。没有账号,不联网,整套东西就是你磁盘上的一个文件。

01|首先它是个正经密码库

它先把密码库该干的活都干了,细节还挺抠:

  • • 一个 KDBX 4 文件,按分组放条目:标题、用户名、密码、URL、备注。搜索只查标题、用户名和 URL,不碰密码。

  • • keypaste get 把密码塞进剪贴板,20 秒后自动清掉。想直接输出到终端,得显式加 --show。

  • • --generate 直接生成密码,默认 20 位,大约 128 bit,长度 8 到 256 可调。字符表剔掉了在 shell、YAML、URL 里容易出事的符号——这个取舍挺实际。

  • • keypaste rotate 换一个新密码,而且不打印出来。

  • • 每次改动都有历史,一步回滚;旁边还挂着滚动加密备份。

  • • keypaste import 能把别的 KDBX 并进来,也能接着原地编辑。

另外,KeePass 兼容这件事它不是嘴上说说。CI 在 Linux、macOS、Windows 上拿 keepassxc-cli 双向验格式,确保自己写出来的文件,KeePassXC 那边也认。

keypaste 桌面端
keypaste 桌面端

02|最关键的一点:AI 要密钥,得先过你

代理要密钥,不是"给你一个库随便翻",而是通过 MCP 精确地要一个条目的一个字段,还要附一句用途。

你在弹窗里选:拒绝、允许一次、允许一小时。发布版的 v0.3.0 还朴素一些,就是一句 Approve? [y/N],最多等 300 秒;拒绝/一次/一小时/永久允许这四档,是下一版才有的。每次请求都写进审计日志,日志带哈希链,改一条就对不上(这点做得很较真,日志不是它写的文件时,命令直接以退出码 5 失败)。

我挺喜欢它弹窗里的一句话:这句理由是 agent 写的,不是 keypaste 写的,请当成一个说法看待。它没有假装自己能判断 agent 是不是在骗你,只把事实摆清楚。这个分寸感,比那些吹"AI 安全审计"的工具实在多了。

03|密钥只在环境变量里,还能分环境

keypaste run 只把值注入到命令的环境变量里,磁盘上什么都不留。

加 --allow-run,agent 能跑一条你批准过的命令,拿回来的输出里,每个值都会被替换掉。但作者自己把话说透了:如果那条命令是 agent 能改的,它照样有办法把值弄出来。所以这里不开 shell,批准的也是具体那一条命令——能挡住的挡,挡不住的也不装。

项目按 dev、staging、prod 分开存值。生产环境的值,每次都得你当场点头,没有"记住一小时"这种便利。

还有 .env.keypaste:里面只写 KEY=kp://project/profile/KEY 这样的引用,没有明文,提交到仓库也不怕。这一下就把"忘了加 .gitignore"这个经典事故给绕过去了。

04|安装使用也简单

Windows 上就是下载、校验、解压:

$a = "keypaste-0.3.0-win-x64.zip"
Invoke-WebRequest -OutFile $a "https://dl.keypaste.com/v0.3.0/$a"
Invoke-WebRequest -OutFile "$a.sha256" "https://dl.keypaste.com/v0.3.0/$a.sha256"
$want = (Get-Content "$a.sha256" -Raw).Split()[0]
if ((Get-FileHash $a -Algorithm SHA256).Hash -ne $want) { throw "checksum mismatch" }
Expand-Archive $a -DestinationPath .

macOS 和 Linux 是一段 curl 加 sha256 校验,都是原生二进制,不用装 .NET 运行时。macOS 要 14 以上,Windows 要 10 1809 以上,都是跟着 .NET 10 的支持范围来的。

接 Claude 也简单,一条命令:

keypaste setup --vault ~/vault.kdbx

它会通过各家客户端的 mcp add 去配,或者打印一段配置给你自己贴。客户端配置里不含主密码——密码只在 keypaste agent --vault ~/vault.kdbx 那个终端里,解锁时才出现。

开源地址:https://github.com/notinferred/keypaste

写在最后

也有几个点要注意的。

第一,桌面端还没发布。现在能用的只有 v0.3.0 的 CLI,桌面应用得自己拉源码构建,没有公开安装包。共享链接、给 CI 用的作用域令牌,代码写了,但还压着等下一版。

第二,别图省事装旧版。v0.2.0 两个程序同时保存,可能一方把另一方的改动直接盖掉;v0.1.0 更离谱,env export 能把库删了,env rm 能改错条目,get 还能返回错的密码。这些版本不会下架,坑也一直在。

第三,校验和防的是下载坏包,不是换包。校验文件和压缩包放在同一个源,有人能换一个,就能换两个。二进制也没签名,只有 v0.3.0 带了构建证明,能用 gh 不登录就验。

总的来说,它的亮点不是"又做了一个密码管理器",而是把 AI 要密钥这件事,从"随手一贴"变成了"先说理由、你点个头、最后留一笔记录"。这套流程用顺了,基本回不去原来那种给法。

- End -

来源:博客园 · cnblogs.com