运行 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 的工作原理了解不够,甚至无法弄清楚最可能的罪魁祸首是什么。
答案1
这解决了问题中提到的问题(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
),其中一些只是不可变的默认值,而另一些则取决于您在剧本中指定的变量。