返回

文章详情

显示 HN:Secs-man,一个你(不)可以依赖的秘密管理器

Hacker News2026年6月25日 12:30

secs-man 是一个旨在管理备份的秘密工具,考虑到工具独立性:如果你使用这个软件加密你的秘密,你应该能够在没有这个软件的情况下解密和恢复它们。即使 secs-man 从地球上消失,你的数据仍然可以访问。secs-man 可用于管理本地和远程机器的秘密,非常适合创建只在本地的备份,特别是对于一些过于敏感而无法在云端备份的数据。哲学理论 你不应该依赖任何特定软件备份你的极其重要数据。任何强迫你在使用后仍然停留在其生态系统的软件(例如:“如果你用这个软件加密,你只能用这个软件解密”)会使你对其产生依赖。因此,你重要数据的加密、解密和恢复应该是解耦的,也就是说,如果你用软件 X 加密,你仍然应该能在没有软件 X 的情况下解密。实践中,实际上你无法创建一个 100% 安全的设置来保护你的秘密免受数据丢失。即使你的软件 X 兼容 Y、Z 和 W,如果 X、Y、Z 和 W 同时停止工作,你仍然会失去对数据的访问。在实践中,你需要确保仅依赖于被认为是“标准”或接近标准的技术。我愿意依赖 bash 解释器、USB 端口和 Linux 机器的存在。因此,secs-man 的真正目标是仅通过以下方式实现完美的可重复性:终端 coreutils,如 cp、mv 和 sha256sum、age、手动工作和一点时间。对 age 的依赖是最微妙的,但对某些加密库的依赖是不可避免的,而 age 具有极好的流行性和 Rust 中良好的绑定。这确保了即使发生任何事情阻止你再次使用这个软件,只要 age 还存在,并且你愿意花 30 分钟的时间,你仍然可以恢复所有的秘密。手动恢复部分解释了如何在不使用此软件的情况下导入该软件导出的秘密,也就是仅使用 coreutils、age 和终端。安装 secs-man 并未在任何地方发布(不是发布的 crate,也不在 nixpkgs、AUR 或类似地方)。只能通过以下方式直接从此仓库安装。使用 nix run 如果你只需要偶尔运行 secs-man,可以直接运行,而无需安装(需要启用 flakes) nix run github:Fran314/secrets-manager-rs -- export /path/to/secrets /path/to/export/endpoint 通过你的 Nix 配置 要使 secs-man 在系统范围内可用,可以在你的 Nix 配置中使用 fetchGit 导入这个仓库,并将生成的包添加到 environment.systemPackages(或使用 home-manager 的 home.packages) let secs-man = pkgs . callPackage " ${ builtins . fetchGit { url = "https://github.com/Fran314/secrets-manager-rs.git" ; ref = "main" ; # rev = "<commit>"; # 锁定特定提交以实现可重复性 } } /default.nix" { } ; in # 将 `secs-man` 添加到 environment.systemPackages 或 home.packages 使用 cargo 如果你不在 NixOS 上,可以通过指向此仓库来安装 secs-man 二进制文件 cargo install --git https://github.com/Fran314/secrets-manager-rs 请注意,以上任何方法都不会安装远程机器所需的 secs-man-ssh 脚本:这是一个独立的脚本,必须单独从此仓库复制。使用 这个工具允许从给定的源目录导出和加密文件,并通过导入回到同一目录来恢复它们。使用此工具的推荐方法是将所有“秘密”(密钥、文件等)放在一个集中目录中。在秘密目录的根目录下,应该有一个 .secrets-manifest 明文文件,包含需要管理的秘密列表,形式为相对于秘密目录的路径。文件路径不能包含空格。每个条目还可以指定一个所有者和一个模式,这将在导入时用于设置正确的权限。请参见 .secrets-manifest.example 以了解语法。在导出过程中,清单中列出的文件通过 age 进行加密,并通过交互式提示请求一个密码短语(secs-man 从不从文件、参数或环境变量中读取它)。在导入时会再次请求相同的密码短语,以解密文件。文件的完整性由一个伴随的 *.sha256 文件保证,该文件在缺失时会自动生成。加密文件会导出到导出目标目录内的一个带时间戳的快照中。然后,可以通过指向导出目标目录(以导入最新快照)或指向该目录内的特定快照来解密和导入这些文件。以下命令可以在没有 sudo 的情况下运行,但如果清单指定的所有者与执行命令的用户不同(因为内部的 chown 调用将失败),它们将失败。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡