与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-vvv ansible-playbook

您可以通过在ssh_args[ssh_connection]部分中指定ssh_args来修复/覆盖这些选项, ssh_args .ansible.cfg指定的。 另外值得注意的是,与你可能从名字中推断出的内容ssh_args ,改变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 ),其中一些是简单的不变的默认值,其中一些依赖于你在手册中指定的variables。