Как отключить проверку ключей хоста в Ansible

AnsibleAnsibleBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Ansible - это мощный инструмент автоматизации IT, который упрощает управление инфраструктурой и развертывание. Однако при работе с удаленными хостами проверка ключей хоста по умолчанию в Ansible может иногда создать проблемы. В этом руководстве вы узнаете, как отключить проверку ключей хоста в Ansible, чтобы обеспечить плавный и эффективный процесс автоматизации.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/ModuleOperationsGroup(["Module Operations"]) ansible(("Ansible")) -.-> ansible/InventoryManagementGroup(["Inventory Management"]) ansible/ModuleOperationsGroup -.-> ansible/command("Execute Commands") ansible/ModuleOperationsGroup -.-> ansible/file("Manage Files/Directories") ansible/ModuleOperationsGroup -.-> ansible/ping("Network Test") ansible/ModuleOperationsGroup -.-> ansible/shell("Execute Shell Commands") ansible/InventoryManagementGroup -.-> ansible/host_variables("Set Host Variables") subgraph Lab Skills ansible/command -.-> lab-415240{{"Как отключить проверку ключей хоста в Ansible"}} ansible/file -.-> lab-415240{{"Как отключить проверку ключей хоста в Ansible"}} ansible/ping -.-> lab-415240{{"Как отключить проверку ключей хоста в Ansible"}} ansible/shell -.-> lab-415240{{"Как отключить проверку ключей хоста в Ansible"}} ansible/host_variables -.-> lab-415240{{"Как отключить проверку ключей хоста в Ansible"}} end

Понимание проверки ключей хоста

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

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

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

graph LR A[Client] -- Connect --> B[Remote Host] B -- Public Key --> A A -- Verify Public Key --> C[Known Hosts File]
Действие Описание
Connect Клиент подключается к удаленному хосту.
Public Key Удаленный хост отправляет свой открытый ключ клиенту.
Verify Public Key Клиент сравнивает полученный открытый ключ с тем, который хранится в файле known_hosts.

Отключение проверки ключей хоста

Для отключения проверки ключей хоста в Ansible вы можете использовать следующие методы:

Переменная окружения

Вы можете установить переменную окружения ANSIBLE_HOST_KEY_CHECKING в значение False, чтобы отключить проверку ключей хоста глобально:

export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook my_playbook.yml

Файл конфигурации Ansible

Вы также можете отключить проверку ключей хоста, установив параметр host_key_checking в файле конфигурации Ansible (/etc/ansible/ansible.cfg или ~/.ansible.cfg):

[defaults]
host_key_checking = False

Параметр командной строки Ansible

В качестве альтернативы вы можете отключить проверку ключей хоста для конкретной команды Ansible, используя параметр --ask-vault-pass или -k:

ansible-playbook my_playbook.yml --ask-vault-pass -k

При этом вам будет предложено ввести пароль для хранилища (vault) и проверка ключей хоста будет отключена для текущей команды.

graph LR A[Ansible] -- Set Environment Variable --> B[ANSIBLE_HOST_KEY_CHECKING=False] A -- Set Configuration File --> C[ansible.cfg] A -- Use Command-line Option --> D[--ask-vault-pass/-k]

Отключив проверку ключей хоста, вы можете упростить процесс подключения и облегчить работу с динамическими или временными хостами. Однако важно отметить, что это также увеличивает риск атаки "человек посередине", поэтому рекомендуется отключать проверку ключей хоста только в не-продакшн окружениях или когда вы уверены в том, что удаленные хосты являются надежными.

Настройка проверки ключей хоста

Если вы предпочитаете оставить включенной проверку ключей хоста, вы можете настроить ее в соответствии с вашими потребностями. Вот несколько вариантов:

Ручное принятие ключей хоста

Когда вы впервые подключаетесь к удаленному хосту, Ansible попросит вас принять открытый ключ хоста. Вы можете вручную принять ключ, введя "yes", когда появится запрос:

The authenticity of host 'example.com (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:abcd1234efgh5678.
Are you sure you want to continue connecting (yes/no)? yes

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

Автоматическое принятие ключей хоста

В качестве альтернативы вы можете настроить Ansible на автоматическое принятие ключей хоста, установив параметр host_key_auto_add в файле конфигурации Ansible:

[defaults]
host_key_auto_add = True

Это автоматически добавит новые ключи хоста в файл known_hosts без запроса подтверждения.

Указание пользовательского файла known_hosts

По умолчанию Ansible использует файл ~/.ssh/known_hosts для хранения ключей хоста. Однако вы можете указать пользовательский файл known_hosts, установив переменную окружения ANSIBLE_SSH_ARGS:

export ANSIBLE_SSH_ARGS="-o UserKnownHostsFile=/path/to/custom/known_hosts"
ansible-playbook my_playbook.yml

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

graph LR A[Ansible] -- Prompt for Manual Acceptance --> B[known_hosts file] A -- Automatically Accept --> C[known_hosts file] A -- Specify Custom File --> D[/path/to/custom/known_hosts]

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

Резюме

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