Назад | Перейти на главную страницу

Проблемы с ssh и Ansible

При запуске недоступной задачи (с script действие), я получаю это сообщение об ошибке:

stderr: OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 2
Shared connection to 10.0.2.222 closed.

Перед этим есть несколько задач, нацеленных на один и тот же хост, и все они работают нормально. Я знаю, что это клиент, потому что клиент - это Debian; Предоставляемая вещь - это Centos.

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

Host 10.0.2.222
  ControlMaster no

к началу моего /etc/ssh/ssh_config из-за этот вопрос из чистого отчаяния, но это не сработало, и я действительно не знаю, что могло пойти не так; Я не знаю достаточно о том, как работает SSH, чтобы даже понять, что может быть наиболее вероятным виновником.

Это устранило проблему, упомянутую в вопросе (проблемы с ssh-соединением все еще существуют, но это уже другой вопрос).

По умолчанию ansible добавляет некоторые параметры, которые отменяют ssh_config параметры. В частности, он добавляет:

-o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/home/devel/.ansible/cp/ansible-ssh-%h-%p-%r"

Выяснили это, используя -vvv с участием ansible-playbook.

Вы можете исправить / переопределить эти параметры, указав ssh_args в [ssh_connection] раздел вашего .ansible.cfg как указано Вот. Также стоит отметить, что, вопреки тому, что можно сделать из названия, изменение ssh_args фактически не меняет все аргументы. Ansible также проходит -C -tt -v -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o ConnectTimeout=10 и другие варианты (например, -o PasswordAuthentication=no -o User=root), некоторые из которых являются просто неизменяемыми значениями по умолчанию, а некоторые зависят от переменных, которые вы указали в playbook.