community.crypto.openssh_keypair 模块 – 生成 OpenSSH 私钥和公钥
注意
此模块是 community.crypto 集合(版本 2.22.3)的一部分。
如果您正在使用 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用: ansible-galaxy collection install community.crypto。您需要其他要求才能使用此模块,请参阅 要求 了解详细信息。
要在 playbook 中使用它,请指定:community.crypto.openssh_keypair。
概要
- 此模块允许重新生成 OpenSSH 私钥和公钥。它使用 ssh-keygen 生成密钥。可以生成 - rsa、- dsa、- rsa1、- ed25519或- ecdsa私钥。
要求
执行此模块的主机需要以下要求。
- ssh-keygen (如果 - backend=openssh)
- cryptography >= 2.6 (如果 - backend=cryptography并且安装了 OpenSSH < 7.8)
- cryptography >= 3.0 (如果 - backend=cryptography并且安装了 OpenSSH >= 7.8)
参数
| 参数 | 注释 | 
|---|---|
| 结果文件系统对象应具有的属性。 要获取支持的标志,请查看目标系统上  此字符串应包含与  假设  | |
| 在  
 选项 
 | |
| 为公钥提供新的注释。 | |
| 即使密钥已存在,也应该重新生成密钥吗? 选项 
 | |
| 应拥有文件系统对象的组的名称,就像输入到  如果未指定,则使用当前用户的当前组,除非您是 root 用户,在这种情况下,它可以保留先前的所有权。 | |
| 结果文件系统对象应具有的权限。 对于那些习惯于  如果未遵循以上任何规则而向 Ansible 提供一个数字,最终会得到一个十进制数字,这将产生意外的结果。 从 Ansible 1.8 开始,可以将模式指定为符号模式(例如, 如果未指定  如果未指定  指定  | |
| 应该拥有文件系统对象的用户的名称,就像提供给  如果未指定,则使用当前用户,除非您是 root 用户,在这种情况下,它可以保留之前的属主关系。 指定数字用户名将被视为用户 ID 而不是用户名。避免使用数字用户名以避免混淆。 | |
| 用于解密现有私钥或加密新生成的私钥的密码。 对于  仅当  | |
| 包含公钥和私钥的文件的名称。包含公钥的文件将具有扩展名  | |
| 当  当设置为  对于 OpenSSH < 7.8,私钥将采用 PKCS1 格式,但 ed25519 密钥将采用 OpenSSH 格式。 对于 OpenSSH >= 7.8,所有私钥类型都将采用 OpenSSH 格式。 当  选项 
 | |
| 允许配置在哪些情况下允许模块重新生成私钥。如果目标文件不存在,则模块始终会生成新密钥。 默认情况下,当密钥与模块的选项不匹配时,将重新生成密钥,除非密钥无法读取或密码不匹配。请注意,对于 Ansible 2.10,此行为已 **更改**。对于 Ansible 2.9,其行为就像指定了  如果设置为  如果设置为  如果设置为  如果设置为  如果设置为  请注意,调整注释和权限可以在不重新生成的情况下进行更改。因此,即使对于  选项 
 | |
| SELinux 文件系统对象上下文的级别部分。 这是 MLS/MCS 属性,有时称为  当设置为  | |
| SELinux 文件系统对象上下文的角色部分。 当设置为  | |
| SELinux 文件系统对象上下文的类型部分。 当设置为  | |
| SELinux 文件系统对象上下文的用户部分。 默认情况下,它使用  当设置为  | |
| 指定要创建的私钥中的位数。对于 RSA 密钥,最小大小为 1024 位,默认大小为 4096 位。通常,2048 位被认为是足够的。DSA 密钥必须完全为 FIPS 186-2 指定的 1024 位。对于 ECDSA 密钥,大小通过从三个椭圆曲线大小之一中进行选择来确定密钥长度:256、384 或 521 位。尝试使用这三个值以外的位长度用于 ECDSA 密钥将导致此模块失败。Ed25519 密钥具有固定长度,并且将忽略大小。 | |
| 私钥和公钥是否应存在,如果状态与声明的不同,则采取操作。 选项 
 | |
| 用于生成 SSH 私钥的算法。 选项 
 | |
| 影响何时使用原子操作来防止数据损坏或从目标文件系统对象读取不一致的数据。 默认情况下,此模块使用原子操作来防止数据损坏或从目标文件系统对象读取不一致的数据,但有时系统的配置方式或只是损坏的方式会阻止这种情况。一个示例是 docker 安装的文件系统对象,它不能从容器内部以原子方式更新,并且只能以不安全的方式写入。 此选项允许 Ansible 在原子操作失败时回退到更新文件系统对象的不安全方法(但是,它不会强制 Ansible 执行不安全写入)。 重要提示!不安全的写入会受到竞争条件的影响,并可能导致数据损坏。 选项 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持: 完整 | 可以在  | |
| 支持: 完整 | 当处于 diff 模式时,将返回有关已更改的内容(或在  | |
| 支持: 完整 | 使用 Ansible 的严格文件操作功能来确保正确的权限并避免数据损坏。 | 
说明
示例
- name: Generate an OpenSSH keypair with the default values (4096 bits, rsa)
  community.crypto.openssh_keypair:
    path: /tmp/id_ssh_rsa
- name: Generate an OpenSSH keypair with the default values (4096 bits, rsa) and encrypted private key
  community.crypto.openssh_keypair:
    path: /tmp/id_ssh_rsa
    passphrase: super_secret_password
- name: Generate an OpenSSH rsa keypair with a different size (2048 bits)
  community.crypto.openssh_keypair:
    path: /tmp/id_ssh_rsa
    size: 2048
- name: Force regenerate an OpenSSH keypair if it already exists
  community.crypto.openssh_keypair:
    path: /tmp/id_ssh_rsa
    force: true
- name: Generate an OpenSSH keypair with a different algorithm (dsa)
  community.crypto.openssh_keypair:
    path: /tmp/id_ssh_dsa
    type: dsa
返回值
通用返回值已在此处记录,以下是此模块特有的字段
| 密钥 | 描述 | 
|---|---|
| 生成的密钥的注释。 返回: changed 或 success 示例:  | |
| 生成的 SSH 私钥文件的路径。 返回: changed 或 success 示例:  | |
| 密钥的指纹。 返回: changed 或 success 示例:  | |
| 生成的 SSH 私钥的公钥。 返回: changed 或 success 示例:  | |
| SSH 私钥的大小(以位为单位)。 返回: changed 或 success 示例:  | |
| 用于生成 SSH 私钥的算法。 返回: changed 或 success 示例:  | 
