3 个版本

0.1.2 2022年11月30日
0.1.1 2022年11月30日
0.1.0 2022年11月28日

#362身份验证

GPL-3.0 许可证

24KB
345 代码行

crates.io Actions Status Actions Status Actions Status

klucznik

通过例如从 GitHub 同步等方式自动管理您的 ssh 访问密钥。

安装

$ cargo install --locked klucznik

使用

安装二进制文件(可选)

将二进制文件安装到全局可访问的位置

$ sudo install ~/.cargo/bin/klucznik /usr/local/bin/klucznik

作为 authorized_keys 更新器

警告 这将覆盖您的 authorized_keys 文件!

设置类似于以下的 cron 作业

* 12 * * * /usr/local/bin/klucznik --sources https://github.com/<your username>.keys --destination /home/<user>/.ssh/authorized_keys

您可以通过更多标志添加更多源。

或者,使用 ssh-key-dir 来避免覆盖您的 authorized_keys

* 12 * * * /usr/local/bin/klucznik --sources https://github.com/<your username>.keys --destination /home/<user>/.ssh/authorized_keys.d/klucznik

然后配置您的 sshd_config 中的 AuthorizedKeysCommand 以使用 ssh-key-dir,使 ssh 从该文件夹读取覆盖。

作为 AuthorizedKeysCommand(实验性!)

更改您的 sshd_config 中的以下设置

AuthorizedKeysCommand /usr/local/bin/klucznik --sources https://github.com/<username>.keys
AuthorizedKeysCommandUser root

路线图

v0.1 '比过度设计的 curl 替换多一点但工作'

  • 可通过命令行参数/标志配置
  • 从公共 URL 获取 authorized_keys
  • 验证是否确实返回了密钥(基本)
  • 保存到文件
  • 自动 cargo 发布

v0.1.1

  • 修复将多个源写入一个文件的问题
  • 如果提供了目标,并且文件内容相同,则不要覆盖
  • 如果返回的密钥为空,则不要覆盖

v0.2 'curl 与集中配置'

  • 删除重复的密钥
  • 支持配置文件(远程 + 本地)
  • 能够读取/存储特定于主机的配置

v0.3

  • 添加了对受验证(私有)URL 的支持

v1

  • 改进 AuthorizedKeysCommand 支持(能够使用它而不是 ssh-key-dir)。
  • 能够直接从 URL 授权(使用 AuthorizedKeysCommand 而不是 authorized_keys
  • 确保缓存数据正确,以便即使在 GitHub/Gitlab 当前无法使用的情况下,仍可以验证。
  • 能够在 AuthorizedKeysCommand 中链式调用命令

依赖关系

~4.5MB
~110K SLoC