将多个SSH公钥与Django用户帐户关联(django-sshkey的分支,没有SSHD集成)
项目描述
django-simplesshkey 允许您将多个SSH公钥与Django用户帐户关联。它提供了用于列出、添加、编辑和删除密钥的视图,每个视图都旨在供最终用户使用。当然,您也可以通过管理界面管理SSH密钥。
SSH密钥简单地存储在Django数据库中,您如何使用它们取决于您:您可以设置一个cron作业,定期将SSH密钥导出到文件,或者连接一个信号,每次保存SSH密钥时执行操作……例如,作者使用Ansible将SSH密钥部署到多台机器。
关于django-sshkey和django-simplesshkey
django-simplesshkey 是基于 django-sshkey 的分支,基于2.5.0版本。
这个分支的目标有两个
仅保留管理与Django用户关联的SSH密钥所需的基本功能。特别是,与OpenSSH的可选集成已被完全删除,这简化了配置并避免了默认情况下泄露信息(公开查找视图)。此外,当添加或修改密钥时不再发送电子邮件,因为这可以很容易地在应用程序外部实现。
更灵活:对模型施加更少的约束(无唯一性),允许覆盖模型或表单的一些字段。此外,在应用程序外部发送电子邮件显然提供了更大的灵活性。
当然,如果您需要使用 django-sshkey 的所有额外功能,您应该继续使用它!
从 django-sshkey 迁移
如果您正在使用 django-sshkey 但不需要额外功能,您可以使用 django-simplesshkey 并导入您的数据。
迁移过程有些复杂,请参阅 README.upgrading.rst 获取详细信息。
Django 应用
要在您的 Django 项目中使用 django-sshkey,只需将 django_sshkey 添加到 settings.py 中的 INSTALLED_APPS,将 URL 映射到您的项目中,并为视图提供模板(示例模板在源代码中提供)。
URL 配置
以下文本假设您的项目的 urls.py 将 simplesshkey.urls 映射到以下 URL 命名空间
urlpatterns = [ ... url('^sshkey/', include('simplesshkey.urls')), ... ]
如果您使用不同的映射,您需要调整以下示例中的 URL。
设置
- SSHKEY_ALLOW_EDIT
布尔值,默认为 False。是否允许编辑密钥。
- SSHKEY_DEFAULT_HASH
字符串,可以是 sha256、md5 或 legacy(默认)。用于计算密钥指纹的默认哈希算法。结果哈希存储在每个 SSH 密钥对象的 fingerprint 字段中。旧版行为强制执行 OpenSSH 6.8 之前的 MD5,没有 MD5: 前缀。
模板
示例模板可在 templates.example 目录中找到。
- sshkey/userkey_list.html
在列出用户的密钥时使用。
- sshkey/userkey_detail.html
在添加或编辑用户的密钥时使用。
管理命令
- import_sshkey [--auto-resolve] [--prefix PREFIX] [--name NAME] USERNAME KEY_PATH ...
将 SSH 公共密钥导入以绑定到用户。如果提供了 --auto-resolve/-a,则尝试使用 UUID 生成唯一的密钥名称。在此过程中使用的前缀是密钥名称,但可以使用 --prefix/-p 进行更改。
- normalize_sshkeys [USERNAME KEY_NAME]
重新计算密钥数据以反映更改的设置,例如,如果您已更改 SSHKEY_DEFAULT_HASH 并且数据库中某些密钥的指纹不正确。如果没有提供参数,则所有密钥都将进行标准化。用户名和密钥名称是可选的,如果指定,则限制受影响的密钥为用户拥有的密钥或特定用户的密钥。这也可以通过管理面板完成,但如果您有一个大的密钥数据库,请求可能会导致超时。
项目详情
django-simplesshkey-2.1.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5bee57b5564469f35c8711fe0ac78b0cbe6094c46099055e7058e411ec18e4f4 |
|
MD5 | 4d2a210dce6ed2d604d6fc8666aac054 |
|
BLAKE2b-256 | 77cfce8e7f7ff0bc9930b941f48705f8b09551f55e66546c577f09b663a73c50 |