17 个版本
0.4.1 | 2021 年 5 月 9 日 |
---|---|
0.4.0 | 2021 年 3 月 22 日 |
0.3.5 | 2021 年 1 月 11 日 |
0.3.4 | 2020 年 9 月 5 日 |
0.1.0 | 2017 年 5 月 29 日 |
#160 在 身份验证 中排名
每月 71 次下载
160KB
4K SLoC
nitrocli
nitrocli 是一个程序,它为与 Nitrokey Pro、Nitrokey Storage 和 Librem Key 设备交互提供了命令行界面。
当前支持以下命令
- list: 列出所有连接的 Nitrokey 设备。
- status: 报告 Nitrokey 的状态信息。
- lock: 锁定 Nitrokey。
- config: 访问 Nitrokey 的配置。
- get: 读取当前配置。
- set: 更改配置。
- encrypted: 与 Nitrokey Storage 的加密卷交互。
- open: 打开加密卷。需要输入用户 PIN。
- close: 关闭加密卷。
- hidden: 与 Nitrokey Storage 的隐藏卷交互。
- create: 创建隐藏卷。
- open: 使用密码打开隐藏卷。
- close: 关闭隐藏卷。
- otp: 访问一次性密码 (OTP)。
- get: 生成一次性密码。
- set: 设置 OTP 插槽。
- status: 列出所有 OTP 插槽。
- clear: 删除 OTP 插槽。
- pin: 管理 Nitrokey 的 PIN。
- clear: 从 gpg-agent 的缓存中删除用户和管理员 PIN。
- set: 更改管理员或用户 PIN。
- unblock: 解锁并重置用户 PIN。
- pws: 访问密码保险库 (PWS)。
- get: 查询 PWS 插槽上的数据。
- set: 在 PWS 插槽上设置数据。
- status: 列出所有 PWS 插槽。
- clear: 删除 PWS 插槽。
- unencrypted: 与 Nitrokey Storage 的未加密卷交互。
- set: 更改未加密卷的读写模式。
用法
用法很简单,只需将相应命令的名称作为参数提供(注意,某些命令通过子命令组织,子命令也是必需的),例如。
# Open the nitrokey's encrypted volume.
$ nitrocli storage open
$ nitrocli status
Status:
model: Storage
serial number: 0x00053141
firmware version: v0.54
user retry count: 3
admin retry count: 3
Storage:
SD card ID: 0x05dcad1d
SD card usage: 24% .. 99% not written
firmware: unlocked
storage keys: created
volumes:
unencrypted: active
encrypted: active
hidden: inactive
# Close it again.
$ nitrocli storage close
更多信息,包括目的的更详细解释、潜在子命令以及每个命令的参数,可以在man
页面中找到。
安装
除了Rust及其包管理工具Cargo之外,还需要以下依赖项
- hidapi:为了提供USB访问,使用此库。
- GnuPG:程序
gpg-connect-agent
允许用户输入PIN。
通过软件包
以下软件包可用
- Arch Linux:在Arch用户仓库中提供
nitrocli
- Debian:自Debian Buster起提供
nitrocli
- Gentoo Linux:提供
app-crypt/nitrocli
ebuild - Ubuntu:自Ubuntu 19.04起提供
nitrocli
从Crates.io
nitrocli在crates.io上发布,可以直接从那里安装
$ cargo install nitrocli --root=$PWD/nitrocli
从源码
在克隆存储库后,构建过程就像运行
$ cargo build --release
建议将生成的可执行文件安装在一个可通过PATH
环境变量访问的目录中。
Shell自动完成
nitrocli提供了对选项和其参数的自动完成支持(适用于各种shell)。可以通过shell-complete
实用程序生成完成脚本,然后只需要将其源文件添加到当前shell中,以使其提供上下文相关的自动完成支持。
$ cargo run --bin=shell-complete bash > nitrocli.bash
$ source nitrocli.bash
生成的完成脚本(针对bash
特定,在这种情况下)可以像往常一样安装到系统中,并通过Bash初始化文件(如~/.bashrc
)进行源文件。
其他shell的完成脚本以类似的方式工作。请参阅shell-complete
程序的说明文本(--help
)以获取支持的shell列表。
已知问题
- 由于macOS上默认的
hidapi
版本存在问题,建议用户从源代码构建和安装libnitrokey
,然后在构建nitrocli
时设置USE_SYSTEM_LIBNITROKEY
环境变量,使用上述方法之一。 nitrocli
无法连接到当前正在被nitrokey-app
访问的Nitrokey设备(上游问题)。为防止此问题,在使用nitrocli
之前先退出nitrokey-app
。- 使用Nitrokey设备的应用程序(如
nitrocli
或nitrokey-app
)无法轻松与随后运行的scdaemon/GnuPG实例共享访问权限(上游问题)。作为解决方案,用户可以在调用nitrocli
并使用gpg-connect-agent 'SCD KILLSCD' /bye
后终止scdaemon
。
公共API和稳定性
nitrocli遵循语义化版本规范2.0.0。其公共API由nitrocli(1) man
页面定义。
贡献
贡献通常受欢迎。请遵循CONTRIBUTING.md中概述的指南。
致谢
Robin Krahl (@robinkrahl)对nitrocli的开发起到了关键作用。
Nitrokey GmbH慷慨地提供了所需的硬件,包括Nitrokey Pro和Nitrokey Storage设备,用于开发和测试程序。
Purism友好地帮助开发Librem Keys的支持,通过提供必要的硬件设备进行测试。
许可证
nitrocli根据GPLv3许可条款提供。
请参阅随此分发一同提供的LICENSE文件,以获取许可条款的全文。
nitrocli
符合REUSE规范3.0版本。
依赖
~2.6–4MB
~63K SLoC