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身份验证 中排名

Download history 1/week @ 2024-04-22 6/week @ 2024-04-29 6/week @ 2024-05-06 1/week @ 2024-05-13 9/week @ 2024-05-20 20/week @ 2024-05-27 23/week @ 2024-06-03 23/week @ 2024-06-10 23/week @ 2024-06-17 16/week @ 2024-06-24 6/week @ 2024-07-01 13/week @ 2024-07-08 14/week @ 2024-07-15 15/week @ 2024-07-22 23/week @ 2024-07-29 17/week @ 2024-08-05

每月 71 次下载

GPL-3.0-or-later

160KB
4K SLoC

pipeline crates.io rustc

nitrocli

nitrocli 是一个程序,它为与 Nitrokey ProNitrokey StorageLibrem 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。

通过软件包

以下软件包可用

从Crates.io

nitroclicrates.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设备的应用程序(如nitroclinitrokey-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