1 个不稳定版本

0.0.1 2021年6月1日

#35#secure-password

MIT 许可证

5KB
56

🔑 ky

简单 & 安全的密码管理器

build crates.io

实验性:该项目仍在积极开发中,可能会在任何时候引入破坏性更改。此外,我并非密码学专家,如果您对密码学有所了解,我将非常乐意接收您的反馈。

🚀 安装

使用 cargo(Linux/macOS/Windows)

  • 参阅 #5

使用 yaypamac(Arch Linux)

# Using `yay`
yay -S ky

# Using `pamac`
pamac build ky

使用发布版本二进制文件(Linux/macOS/Windows)

查看 发布页面 获取针对 ky 的预构建二进制文件,适用于不同的操作系统。

🤞 使用

全局选项/标志

选项 环境变量 描述
--vault-path KY_VAULT_DIR 备份/导出目录的路径
--backup-path KY_BACKUP_DIR 保险库目录的路径
--git-repo KY_GIT_REPO 用作备份存储的 Git 仓库
--git-branch KY_GIT_BRANCH Git 仓库的默认分支
标志 描述
--version 打印版本
--help 打印帮助文档

基础

  • 获取帮助

如果您想深入了解每个命令、选项和标志,请使用 ky helpky --help。子命令也有 help 命令和 --help 标志可用。

  • 初始化保险库(必需)

所有内容都存储在一个小的 lmdb 数据库中。因此,在保存密码之前需要初始化保险库。要初始化保险库,请运行 ky init。运行此命令后,您将提示输入主密码,请确保输入一个强大且易记的密码,因为这将需要在后续的每个操作中使用。

ky init

# help
ky init --help
  • 添加条目

因此,您想创建/添加密码,只需运行 ky add 并提供一个作为唯一标识符的密钥。之后,您将需要输入更多详细信息,例如用户名、网站、过期日期、备注,目前这些都完全是可选的。在收到所有详细信息后,它们将与主密码一起加密并保存到保险库中。

请记住,密码将自动生成并与其他详细信息一起加密。

ky add <key>

# help
ky add --help
  • 显示条目

嗯...您已经添加了一个条目。现在您想查看它。您可以通过运行 ky show 并带有密钥来完成此操作。如果密钥有效,则与该密钥关联的数据将被解密并打印到标准输出。

默认情况下,密码不会解密并显示为隐藏。您需要传递 --clear 标志来以纯文本形式显示密码。

您还可以通过添加 --qr-code 标志将密码以二维码格式打印。

ky show <key> # password will be hidden
ky show <key> --clear # now password will shown
ky show <key> --qr-code --mute # only print qr-code

# help
ky show --help
  • 编辑条目

哦哦!犯了一些错误或想要更新详细信息。不用担心,只需用密钥运行 ky edit 并按照添加条目时类似的提示进行操作。

默认情况下,密码不会更改。但,如果您想重新生成密码,只需添加 --password 标志,那么密码将在最后被重新生成。遗憾的是,您不能手动更新或编辑密码。

ky edit <key> # just edit the details
ky edit <key> # edit details and also regenerate password

# help
ky edit --help
  • 列出所有条目

只需运行 ky list 以列出保存在保险库中的所有条目。这将仅显示密钥而不会接触与相应密钥关联的详细信息。

ky list

# help
ky list --help
  • 重命名密钥

出于某种原因,您想更改密钥或您犯了一些错误并想纠正它。运行 ky move 并提供旧密钥和新密钥。您的数据将使用旧密钥解密,并使用新密钥与主密码一起重新加密,然后保存在保险库中。

ky move <old_key> <new_key>

# help
ky move --help
  • 删除条目

如果您不再需要保存的密码,则运行 ky remove 并提供密钥以从保险库中删除条目。此操作是不可逆的。

ky remove <key>

# help
ky remove --help

备份/恢复

  • 备份保险库

有时您可能想要备份整个保险库,也许是为了在不同的机器上设置保险库。您可以使用 ky backup 并可选地提供路径,这将整个保险库和其他所需文件压缩,并在稍后点时间点创建一个备份文件以进行恢复。

请注意,保险库数据完全未受影响,即哈希和加密。因此,当您恢复备份保险库时,主密码和其他密码等所有数据都将保持不变。

ky backup # backup vault in the default backup path
ky backup -p <path> # backup in provided path

# help
ky backup --help
  • 恢复保险库

备份完成后,您需要恢复该备份。运行 ky restore 以恢复保险库备份,您还可以提供存储备份的自定义路径。一切都将恢复,即哈希和加密,就像备份之前没有改变一样。

ky restore # restore from default path
ky restore -p <path> # restore from the provided path

# help
ky restore --help
  • 导出保险库

创建您保险库的解密导出也是可能的,并且非常简单。只需运行 ky export 并可选地提供导出路径,现在您将有一个包含所有数据(解密)的 csv 文件。

请注意,所有数据都是明文,任何有权访问导出文件的人都可以读取您的密码。

ky export # export in the default path
ky export -p <path> # export in provided path

# help
ky export --help
  • 导入保险库

您可以导入导出的数据或任何具有特定格式的 csv 文件。在导入时,您将被要求输入主密码,所有数据将使用主密码加密,并在加密后保存在保险库中。

ky import # import from the default path
ky import -p <path> # import from the provided path

# help
ky import --help

Git

ky 支持使用 git 作为跟踪和备份你的保险库的方式,使用 git 仓库。这对于备份和恢复密码保险库非常有用,尤其是如果你经常使用多台机器。尽管它不能替代 git,但它依赖于 git。

使用此功能时,需要考虑以下几点

1. Git has to be installed on your machine
2. Repo name is retrieved from either `KY_GIT_REPO` env variable or `--git-repo` option.
3. Similarly, branch name is retrieved from either `KY_GIT_BRANCH` env variable or `--git-branch` option.

Git 命令位于 ky git 子命令下。让我们看看这些命令

# help
ky git --help
  • 初始化

就像 git init,你可以运行 ky git init 来初始化一个 git 仓库,这将初始化并创建第一个提交。可选地,你还可以在第一个提交后推送。

ky git init # init and make first commit
ky git init -p # init, commit, and push

# help
ky git init --help
  • 备份

使用 git 进行备份就像推送你的更改一样,在底层它使用 git {add,commit,push}。运行 ky git backup 来提交并将你的数据库更改推送到仓库。

ky git backup # commit and push
ky git backup -n # don't commit, only push

# help
ky git backup --help
  • 恢复

你还可以使用 git 恢复保险库,在底层它使用 git clone。运行 ky git restore 来克隆并从仓库恢复保险库。

ky git restore

# help
ky git restore --help

其他

  • 随机密码

你还可以生成一个随机且加密强度高的密码。运行 ky gen 来生成密码。 ky add 也使用相同的底层函数来生成随机密码。

默认情况下,密码长度为 20,但你可以通过传递 --length 选项来更改它。

ky gen # generate 20 char password
ky gen -l 25 # generate 25 char password
ky gen -l 25 --qr-code # generate and also print a qr-code

# help
ky gen --help
  • 删除保险库

不要使用此功能。这只是为了方便,如果你想要永久删除你的保险库。

ky nuke
ky nuke --all # delete vault and backups
  • Shell 完成功能

你可以为以下列出的不同 shell 生成完成功能。

# For bash
ky completions bash

# For zsh
ky completions zsh

# For fish
ky completions fish

# For Elvish
ky completions elvish

# Windows Powershell
ky completions pwsh

🔧 构建

ky是用 Rust 编写的,因此你需要安装最新的 Rust 工具链来编译它。访问 rustup.rs 下载工具链。

要构建 ky

  • 设置
git clone https://github.com/numToStr/ky

cd ky
  • 运行
# same as `ky help`
cargo run -- help

# same as `ky init`
cargo run -- init
  • 构建
# debug build
cargo build

# release build
cargo build --release

🚗 路线图

  • ky-reinit
  • ky-session
  • ky-purge

💐 致谢

  • 这个视频 为我提供了关于密码管理器实际上是如何工作的想法。
  • kure 为 CLI 提供了蓝图。
  • 还要感谢所有使用过此应用程序的 crate。

依赖关系

~26MB
~536K SLoC