known_hosts#
Модуль ansible.builtin.known_hosts управляет содержимым файла known_hosts.
При подключении к управляемому узлу клиент SSH ищет запись о нем в этом файле на локальной машине в следующей последовательности:
Если записи нет, клиент выводит сведения об отпечатке узла и запрос на его добавление в
known_hosts.Если запись есть и отпечаток узла не изменился, клиент подключается к узлу.
Если запись есть, но отпечаток узла изменился, клиент блокирует подключение как небезопасное.
Особенности работы#
Особенности работы модуля ansible.builtin.known_hosts:
Можно использовать несколько записей для одного узла, но клиент SSH будет использовать только одну запись для каждого типа ключа. Это может быть полезно при использовании модуля ansible.builtin.git для подключения через SSH.
При большом количестве ключей более эффективным решением будет использование модуля ansible.builtin.template.
Параметры#
Модуль принимает следующие параметры:
- hash_host#
Хеширование названия узла в
known_hosts.Возможные значения:
false– не выполняется;true– выполняется.
- key#
Запись для добавления в
known_hosts.Важно
Этот параметр обязателен для заполнения при
state=presentи необязателен приstate=absent, поскольку в последнем случае все записи об узле удаляются.Формат представлен несколькими полями:
<hostname,[IP]>[:<port>] <pubkey>
Здесь:
<hostname> – название узла.
<IP> – IP-адрес узла.
Может быть указан вместо названия или вместе с ним. Во втором случае значения разделяются запятыми.
<port> – порт для подключения, если отличается от значения по умолчанию.
<pubkey> – содержимое публичного ключа SSH, включая название алгоритма, но без комментария.
Пример
Пусть узел
node.example.comс IP-адресом192.168.122.11использует публичный ключ SSH, созданный по алгоритму ED25519. В этом случае значениеkeyимеет следующий вид:key: node.example.com,192.168.122.11 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIrpKfM3px/WANxru6MZlC11Mj5BVknIAp1Tz1cRDnjf
- name, host#
Обязательный параметр.
Название узла для добавления в
known_hostsили удаления из него. Указанное значение будет автоматически приведено к нижнему регистру, чтобы утилитаssh-keygenсмогла найти его.Значение должно совпадать с названием или IP-адресом узла, указанным в параметре
key. Если порт для подключения отличается от значения по умолчанию, он также должен быть указан.
- path#
Путь к файлу
known_hosts.Если указанный файл не существует, при необходимости он будет создан. Однако, это не относится к каталогу, в котором модуль будет искать файл – если он не существует, задача завершится с ошибкой.
Значение по умолчанию:
~/.ssh/known_hosts.
- state#
Желаемое состояние записи в
known_hosts.Возможные значения:
absent– отсутствует;present– существует.
Значение по умолчанию:
present.
Атрибуты#
Атрибуты определяют функции Ansible, которые может использовать модуль.
Атрибут |
Описание |
|---|---|
|
Модуль работает в режиме проверки ( |
|
Модуль поддерживает режим сравнения ( |
|
Модуль поддерживает только POSIX-совместимые ОС. |
Примеры#
Для изучения возможностей модуля ознакомьтесь с приведенными ниже примерами.
Добавление записи об узле#
Следующий пример демонстрирует добавление записи об узле:
---
- name: Add record to known_hosts
ansible.builtin.known_hosts:
name: node.example.com
key: node.example.com ssh-rsa ASDerarFA13351FE51
path: /etc/ssh/ssh_known_hosts
state: present
Нестандартный порт для подключения#
Следующий пример демонстрирует добавление записи об узле, на котором для подключения по SSH используется порт 2233:
---
- name: Add node.example.com to known_hosts
hosts: all
tasks:
- name: Add record to known_hosts
ansible.builtin.known_hosts:
name: "node.example.com:2233"
key: "node.example.com:2233 ssh-rsa ASDerarFA13351FE51"
path: "/home/{{ ansible_user }}/.ssh/known_hosts"