Spec-Zone.ru › Ansible

Модуль community.crypto.openssh_keypair — создание закрытых и открытых ключей OpenSSH

Примечание

Этот модуль входит в коллекцию community.crypto (версия 3.2.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.crypto. Для использования этого модуля требуются дополнительные компоненты; подробности см. в разделе Требования.

Чтобы использовать модуль в плейбуке, укажите: community.crypto.openssh_keypair.

  • Краткое описание
  • Требования
  • Параметры
  • Атрибуты
  • Примечания
  • Примеры
  • Возвращаемые значения

Краткое описание

  • Этот модуль позволяет создавать или повторно генерировать закрытые и открытые ключи OpenSSH. Для создания ключей используется ssh-keygen. Можно создавать закрытые ключи rsa, dsa, rsa1, ed25519 или ecdsa.

Требования

На узле, выполняющем этот модуль, необходимы следующие компоненты.

  • ssh-keygen (если используется backend=openssh)
  • cryptography >= 3.3 (если используется backend=cryptography)
  • bcrypt (если используются backend=cryptography и passphrase)

Параметры

Параметр

Комментарии

attributes

псевдонимы: attr

string

Атрибуты, которые должен иметь созданный объект файловой системы.

Список поддерживаемых флагов см. на странице руководства для chattr в целевой системе.

Эта строка должна содержать атрибуты в том же порядке, в каком они отображаются командой lsattr.

По умолчанию предполагается оператор =; в противном случае в строку нужно включить оператор + или -.

backend

string

добавлено в community.crypto 1.7.0

Позволяет выбрать между библиотекой cryptography и двоичным файлом OpenSSH opensshbin.

auto по умолчанию будет использовать opensshbin, если двоичный файл OpenSSH не установлен или используется passphrase.

Варианты:

  • "auto" ← (по умолчанию)
  • "cryptography"
  • "opensshbin"

comment

string

Задает новый комментарий для открытого ключа.

force

boolean

Следует ли повторно создавать ключ, даже если он уже существует.

Варианты:

  • false ← (по умолчанию)
  • true

group

string

Имя группы, которой должен принадлежать объект файловой системы, передаваемое команде chown.

Если значение не указано, используется текущая группа текущего пользователя, за исключением случая, когда пользователь — root: тогда может сохраняться прежнее владение.

mode

any

Права доступа, которые должен иметь созданный объект файловой системы.

Если вы привыкли к /usr/bin/chmod, помните, что режимы доступа на самом деле являются восьмеричными числами. Необходимо предоставить Ansible достаточно информации, чтобы он мог правильно их обработать. Для получения предсказуемых результатов указывайте восьмеричные числа в кавычках (например, '644' или '1777'), чтобы Ansible получил строку и самостоятельно преобразовал ее в число. Добавление ведущего нуля (например, 0755) иногда работает, но может привести к сбою в циклах и некоторых других случаях.

Если передать Ansible число, не соблюдая ни одно из этих правил, оно будет интерпретировано как десятичное, что приведет к неожиданным результатам.

Начиная с Ansible 1.8, режим можно указывать в символьном виде (например, u+rwx или u=rw,g=r,o=r).

Если mode не указано, а целевой объект файловой системы не существует, при установке режима для нового объекта будет использоваться системное значение umask по умолчанию.

Если mode не указано, а целевой объект файловой системы существует, будет использоваться режим существующего объекта.

Указание mode — лучший способ обеспечить создание объектов файловой системы с правильными правами доступа. Подробности см. в CVE-2020-1736.

owner

string

Имя пользователя, которому должен принадлежать объект файловой системы, передаваемое команде chown.

Если значение не указано, используется текущий пользователь, за исключением случая, когда пользователь — root: тогда может сохраняться прежнее владение.

Числовое имя пользователя будет считаться идентификатором пользователя, а не именем. Во избежание путаницы не используйте числовые имена пользователей.

passphrase

string

добавлено в community.crypto 1.7.0

Парольная фраза для расшифровки существующего закрытого ключа или шифрования нового закрытого ключа.

Для type=rsa1 парольные фразы не поддерживаются.

Можно использовать только при backend=cryptography либо при backend=auto и установленной необходимой версии cryptography. Обратите внимание: в зависимости от версии cryptography может также понадобиться пакет bcrypt.

path

path / обязательный

Имена файлов, содержащих открытый и закрытый ключи. К имени файла с открытым ключом добавляется расширение .pub.

private_key_format

string

добавлено в community.crypto 1.7.0

Используется при backend=cryptography для выбора формата закрытого ключа по указанному пути path.

Если установлено значение auto, модуль выберет формат ключа, соответствующий установленной версии OpenSSH.

В OpenSSH < 7.8 закрытые ключи будут иметь формат PKCS1, за исключением ключей ed25519, которые будут иметь формат OpenSSH.

В OpenSSH >= 7.8 все типы закрытых ключей будут иметь формат OpenSSH.

Использование этого параметра при regenerate=partial_idempotence или regenerate=full_idempotence приведет к созданию новой пары ключей, если формат закрытого ключа не соответствует значению private_key_format. Однако модуль не преобразует существующие закрытые ключи из одного формата в другой.

Варианты:

  • "auto" ← (по умолчанию)
  • "pkcs1"
  • "pkcs8"
  • "ssh"

regenerate

string

добавлено в community.crypto 1.0.0

Позволяет настроить условия, при которых модулю разрешено повторно создавать закрытые ключи. Модуль всегда создает новый ключ, если целевой файл не существует.

По умолчанию ключ будет создан повторно, если он не соответствует параметрам модуля, за исключением случаев, когда ключ невозможно прочитать или парольная фраза не подходит. Обратите внимание, что это изменилось в Ansible 2.10. В Ansible 2.9 поведение соответствовало указанию full_idempotence.

Если установлено значение never, модуль завершится с ошибкой, если ключ невозможно прочитать или парольная фраза не подходит, и никогда не будет повторно создавать существующий ключ.

Если установлено значение fail, модуль завершится с ошибкой, если ключ не соответствует параметрам модуля.

Если установлено значение partial_idempotence, ключ будет создан повторно, если он не соответствует параметрам модуля. Ключ не будет создан повторно, если его невозможно прочитать (поврежденный файл), если он защищен неизвестной парольной фразой или если ключ не защищен парольной фразой, но она указана.

Если установлено значение full_idempotence, ключ будет создан повторно, если он не соответствует параметрам модуля. Это также произойдет, если ключ невозможно прочитать (поврежденный файл), если он защищен неизвестной парольной фразой или если ключ не защищен парольной фразой, но она указана. При использовании этого параметра обязательно создайте резервную копию!

Если установлено значение always, модуль всегда будет создавать ключ повторно. Это эквивалентно установке force в true.

Обратите внимание: комментарий и права доступа можно изменить без повторного создания ключа. Поэтому даже при never задача может сообщить об изменениях.

Варианты:

  • "never"
  • "fail"
  • "partial_idempotence" ← (по умолчанию)
  • "full_idempotence"
  • "always"

selevel

string

Уровневая часть контекста объекта файловой системы SELinux.

Это атрибут MLS/MCS, иногда называемый range.

Если установлено значение _default, будет использоваться часть политики level, если она доступна.

serole

string

Ролевая часть контекста объекта файловой системы SELinux.

Если установлено значение _default, будет использоваться часть политики role, если она доступна.

setype

string

Типовая часть контекста объекта файловой системы SELinux.

Если установлено значение _default, будет использоваться часть политики type, если она доступна.

seuser

string

Пользовательская часть контекста объекта файловой системы SELinux.

По умолчанию, если применимо, используется политика system.

Если установлено значение _default, будет использоваться часть политики user, если она доступна.

size

integer

Задает количество битов в создаваемом закрытом ключе. Для ключей RSA минимальный размер составляет 1024 бита, а размер по умолчанию — 4096 бит. Обычно достаточным считается размер 2048 бит. Размер ключей DSA должен составлять ровно 1024 бита, как указано в FIPS 186-2. Для ключей ECDSA размер определяет длину ключа выбором одной из трех длин эллиптической кривой: 256, 384 или 521 бит. Попытка использовать для ключей ECDSA длину, отличную от этих трех значений, приведет к ошибке модуля. Ключи Ed25519 имеют фиксированную длину, поэтому параметр размера игнорируется.

state

string

Определяет, должны ли существовать закрытый и открытый ключи; если фактическое состояние отличается от указанного, выполняются соответствующие действия.

Варианты:

  • "present" ← (по умолчанию)
  • "absent"

type

string

Алгоритм, используемый для создания закрытого ключа SSH. rsa1 используется для протокола версии 1. rsa1 устарел и может не поддерживаться некоторыми версиями ssh-keygen.

Варианты:

  • "rsa" ← (по умолчанию)
  • "dsa"
  • "rsa1"
  • "ecdsa"
  • "ed25519"

unsafe_writes

boolean

Определяет, когда следует использовать атомарные операции для предотвращения повреждения данных или несогласованного чтения целевого объекта файловой системы.

По умолчанию этот модуль использует атомарные операции для предотвращения повреждения данных или несогласованного чтения целевых объектов файловой системы, однако некоторые системы настроены особым образом или просто неисправны, поэтому атомарные операции в них невозможны. Например, подключенные в Docker объекты файловой системы нельзя атомарно обновить из контейнера — их можно записывать только небезопасным способом.

Этот параметр позволяет Ansible использовать небезопасные методы обновления объектов файловой системы, если атомарные операции завершаются ошибкой (однако он не заставляет Ansible выполнять небезопасную запись).

ВАЖНО! Небезопасная запись подвержена состояниям гонки и может привести к повреждению данных.

Варианты:

  • false ← (по умолчанию)
  • true

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Модуль может работать в режиме check_mode и возвращать прогноз изменения состояния, не изменяя целевой объект.

diff_mode

Поддержка: полная

В режиме сравнения возвращает подробные сведения о том, что изменилось (или может потребовать изменения в check_mode).

idempotent

Поддержка: частичная

Модуль не является идемпотентным, если указано force=true или regenerate=always.

При повторном запуске с теми же аргументами вне режима проверки второй вызов сообщает об отсутствии изменений.

Предполагается, что система, состояние которой контролирует или проверяет модуль, не изменилась существенным образом.

safe_file_operations

Поддержка: полная

Использует строгие функции Ansible для работы с файлами, обеспечивая надлежащие права доступа и предотвращая повреждение данных.

Примечания

Примечание

  • Если ключ SSH поврежден или защищен паролем, модуль завершится с ошибкой. Установите для параметра force значение true, если нужно повторно создать пару ключей.
  • Если задан пользовательский mode, group, owner или другой атрибут файла, он будет применен к обоим файлам ключей.

Примеры

---
- 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: Regenerate SSH keypair only if format or options mismatch
  community.crypto.openssh_keypair:
    path: /home/devops/.ssh/id_ed25519
    type: ed25519
    regenerate: full_idempotence
    private_key_format: ssh

- name: Generate an OpenSSH keypair with a different algorithm (dsa)
  community.crypto.openssh_keypair:
    path: /tmp/id_ssh_dsa
    type: dsa

Возвращаемые значения

Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:

Ключ

Описание

comment

string

Комментарий созданного ключа.

Возвращается: changed или success

Пример: "test@comment"

filename

string

Путь к файлу созданного закрытого ключа SSH.

Возвращается: changed или success

Пример: "/tmp/id_ssh_rsa"

fingerprint

string

Отпечаток ключа.

Возвращается: changed или success

Пример: "SHA256:r4YCZxihVjedH2OlfjVGI6Y5xAYtdCwk8VxKyzVyYfM"

public_key

string

Открытый ключ созданного закрытого ключа SSH.

Возвращается: changed или success

Пример: "ssh-rsa AAAAB3Nza(...omitted...)veL4E3Xcw=="

size

integer

Размер закрытого ключа SSH в битах.

Возвращается: changed или success

Пример: 4096

type

string

Алгоритм, использованный для создания закрытого ключа SSH.

Возвращается: changed или success

Пример: "rsa"

Авторы

  • David Kainz (@lolcube)

Ссылки на коллекцию

  • Отслеживание ошибок
  • Репозиторий (исходный код)
  • Запросить помощь (crypto)
  • Запросить помощь (ACME)
  • Сообщить об ошибке
  • Предложить новую функцию
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/crypto/openssh_keypair_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API