搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

dreamers-laboratory/good-door

安全

用命令行加密磁盘上的密钥,并在命令或 Agent 运行时注入而不暴露明文。

155
42
Python
MIT
创建于 3 天前

项目介绍

elbab 是一个面向人和 AI Agent 的命令行密钥管理器。它加密已经落在磁盘上的凭据——SSH 私钥、AWS 凭据文件、.env、令牌等——并把本机的加密身份保存在系统保险库或硬件存储中,例如 Keychain、TPM、Secure Enclave、DPAPI 或 YubiKey 插件。需要的命令通过环境变量或临时解密文件拿到密钥,值不必留在明文文件里,也不必出现在 Agent 的记录中(README 第 7–10 行)。

常用操作是:用 set-key 保存一个命名密钥,用 run 带着密钥运行命令,用 print 读取某个字段。它还提供保护现有 SSH、AWS、gcloud、Azure 凭据的辅助命令、只报告名称不报告值的扫描命令,以及给 Agent 用的技能文件(README 第 35–58 行、README 第 59–74 行)。

快速使用

前提:Python 3.9+ 和 age 1.2+(README 第 11–20 行)。项目指向 age 作为底层加密工具(age)。

克隆并安装启动器,然后初始化保险库,并把恢复文件移到离线位置:

git clone https://github.com/dreamers-laboratory/good-door && cd good-door
install -m 755 bin/elbab ~/.local/bin/elbab
elbab init --recovery ~/elbab-recovery.txt

Windows 上不使用 install,而是把 bin\elbab 和 bin\elbab.cmd 放进 PATH(README 第 15–19 行)。init 选择密钥后端:macOS 默认 Keychain,Linux 有 TPM 时使用 TPM,Windows 默认 DPAPI;--identity-file 和 --command 可以接入其他来源,例如打印密钥的密码管理器(README 第 21–34 行)。

保存并使用一个密钥:

elbab set-key openai OPENAI_API_KEY
elbab run openai -- python app.py

set-key 通过交互提示读取值,不把值放在命令行上;run 把值放进子进程环境,不写入文件(README 第 35–58 行)。查看已保存的值可用 elbab print openai OPENAI_API_KEY;加 --copy 会复制到剪贴板,30 秒后清空(README 第 37–47 行)。

保护现有凭据

对已经存在的凭据,README 给出了具体路径:elbab ssh-protect ~/.ssh/id_ed25519 设置随机口令,elbab ssh-load 填充 SSH agent;elbab aws-protect ~/.aws/credentials 把文件转成无密钥形式并通过 AWS credential_process 提供密钥;elbab import-env app .env 导入变量,elbab encrypt .env 在同路径生成 age 加密文件(README 第 59–74 行)。当路径包含斜杠、或以 . 或 ~ 开头时,run 接受路径参数,命令改动了内容会把旧版本留在 backups/。直接用 age -d(文件夹再加 tar)仍能不经 elbab 恢复文件,保留了退路(README 第 59–74 行)。

Agent 使用

README 提供了一个 Agent 技能文件,让 Agent 执行带凭据的命令而不读取值(skill/SKILL.md)。输出经过管道或 Agent shell 环境(例如设置了 CLAUDECODE、CODEX_THREAD_ID)时会被遮蔽,--mask 也可在屏幕上遮蔽(README 第 37–47 行)。Linux 无头 SSH 场景另有 systemd 单元示例(contrib/elbab-ssh-agent.service)。

使用约束

以同一用户身份运行的任何程序都能调用 elbab,因此它保护的是副本——备份、同步目标、记录、其他账号——而不是已被攻陷的账号。encrypt 会替换原文件,但 SSD 可能保留旧数据块,所以仍需单独使用全盘加密。加密文件和文件夹上限 256 MB,不支持链接。--show 和 --dump 在输入系统密码后导出全部内容(README 第 79–85 行)。测试用 python3 -m unittest -v tests/test_elbab.py 运行;macOS、Linux、Windows 的 CI 需要手动触发(README 第 86–88 行)。项目采用 MIT 许可证(仓库)。

HotRepo 点评

该项目在 2026-11-07 进入 Python 新项目榜,录得 109 stars,当天约一小时的观察窗口内增加 4 stars,fork 数为 42。观察窗口很短,全部语言日榜名次未知,这组数字说明的是早期关注,而不是持续热度。设计上值得关注的是 run(注入凭据而不打印)与 print/show(有意把值输出到终端)的明确区分,正好对应 README 面向的 Agent 与人工两种使用场景。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。