Проблема с подключением к WinRM и Ansible

#windows #ansible #ntlm #winrm

#Windows #ansible #ntlm #winrm

Вопрос:

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

Прежде всего, я запустил скрипт ConfigureAnsibleForRemoting.ps1 для запуска WinRM, чтобы Ansible мог подключиться. Конфигурация WinRM показывает, что Basic, Kerberos, согласование и аутентификация сертификата включены. Прослушиватели HTTP и HTTPS также настроены:

Конфигурация WinRM и прослушиватели

Чтобы проверить, что все настроено правильно, я провел несколько тестов:

  1. Запустите тест-WSMan

  2. Войдите в сеанс powershell с удаленного компьютера

  3. Узел доступен из контейнера

    Тесты

Я использовал Basic, NTLM и аутентификацию сертификата. Вот мой инвентарь (я использую не пользователя домена, а локального пользователя) и результат, когда я делаю win_ping с Ansible в каждом случае:

— Базовый: порт 5986

 [prueba_cinco]
host ansible_host=IP

[prueba_cinco:vars]
ansible_user=user
ansible_password=pass
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
  

Основное: вывод порта 5986

— Основной: порт 5985

 [prueba_cinco]
host ansible_host=IP

[prueba_cinco:vars]
ansible_user=user
ansible_password=pass
ansible_connection=winrm
ansible_port=5985
  

Основное: вывод порта 5985

Это ожидаемое поведение, поскольку для параметра AllowUnencrypted в конфигурации winrm установлено значение false. Просто чтобы лучше понять проблему, я разрешил незашифрованный трафик, и после этого соединение можно было установить нормально:

Конфигурация WinRM: разрешенная незашифрованная и базовая: порт 5985 вывод 2

— NTLM: порт 5986

 [prueba_siete]
host ansible_host=IP

[prueba_siete:vars]
ansible_user=user
ansible_password=pass
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
ansible_winrm_transport=ntlm
  

NTML: вывод порта 5986

— NTLM: порт 5985

 [prueba_siete]
host ansible_host=IP

[prueba_siete:vars]
ansible_user=user
ansible_password=pass
ansible_connection=winrm
ansible_winrm_transport=ntlm
ansible_port=5985
  

NTLM: вывод порта 5985

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

— Сертификат: порт 5986 (работает только с HTTPS)

Для этого метода я следовал процедуре официальной документации. Я сгенерировал сертификат с New-SerfSignedcertificate в Powershell. Затем я преобразовал созданный файл PFX в закрытый ключ с помощью OpenSSL (который также содержит открытый ключ). Наконец, я импортировал сертификат в хранилище сертификатов и сопоставил сертификат с учетной записью.

 [WINDOWS]
host ansible_host=IP

[WINDOWS:vars]
ansible_connection='winrm'
ansible_winrm_cert_pem='cert_win.pem'
ansible_winrm_cert_key_pem='cert_win.pem'
ansible_winrm_transport='certificate'
ansible_winrm_scheme='https'
ansible_winrm_server_cert_validation='ignore'
  

Сертификат: вывод порта 5986

Как вы, возможно, заметили, когда я пытаюсь подключиться через порт 5986, я всегда получаю тайм-аут (считывается тайм-аут), независимо от метода или учетных данных. Я увеличил время ожидания выполнения, но результат тот же. С другой стороны, порт 5985, похоже, работает, но появляется ошибка, связанная с заголовками, и я не знаю причины. В любом случае, я бы использовал это только в качестве последнего варианта, поскольку мне нужно использовать порт 5986.

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

Кто-нибудь знает, что происходит?

Заранее благодарю вас.