运行 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.
Run Code Online (Sandbox Code Playgroud)
现在,在此之前有一堆针对同一主机的任务,它们都运行良好。我知道是客户端,因为客户端是 Debian;提供的东西是 Centos。
当我尝试查找此错误消息时,我发现(令我懊恼的是)我得到的通常是针对其他问题的较长消息的第一部分。我尝试添加
Host 10.0.2.222
ControlMaster no
Run Code Online (Sandbox Code Playgroud)
一开始我/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"
Run Code Online (Sandbox Code Playgroud)
通过使用-vvv
with弄清楚了这一点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
),其中一些只是不可变的默认值,而其中一些取决于您在剧本中指定的变量。