ssh 和 Ansible 的问题

Par*_*hot 5 ssh ansible

运行 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 的工作原理知之甚少,甚至无法找出最可能的罪魁祸首是什么。

Par*_*hot 6

这解决了问题中提到的问题(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)

通过使用-vvvwith弄清楚了这一点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),其中一些只是不可变的默认值,而其中一些取决于您在剧本中指定的变量。

  • 是的,但是您特别覆盖了哪些参数来解决问题? (5认同)
  • 第一步是将 `ssh_args` 设置为 `-o ControlMaster=no` 以禁用重用 SSH 连接(又名 [连接多路复用](https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing)) . 如果这停止了故障,您可以查看您的客户端或服务器 openssh 版本是否有问题 - 请参阅 [此错误报告](https://bugzilla.redhat.com/show_bug.cgi?id=1242682) 。有关通过关闭 ControlMaster 解决的类似问题,请参阅 [此答案](http://stackoverflow.com/a/39382868/992887)。一旦您拥有可靠的 SSH,您就可以考虑更新 openssh 以在打开 ControlMaster 的情况下进行修复。 (2认同)