【问题标题】:Ansible: SSH Error: unix_listener: too long for Unix domain socketAnsible: SSH 错误: unix_listener: too long for Unix domain socket
【发布时间】:2020-10-27 04:57:27
【问题描述】:

这是一个已知问题,我找到了解决方案,但对我不起作用。

首先我有:

fatal: [openshift-node-compute-e50xx] => SSH Error: ControlPath too long
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

所以我创建了一个~/.ansible.cfg。内容:

[ssh_connection]    
control_path=%(directory)s/%%h‐%%r

但是在重新运行我的 ansible 之后,我仍然有一个关于“太长”的错误。

fatal: [openshift-master-32axx] => SSH Error: unix_listener: "/Users/myuser/.ansible/cp/ec2-xx-xx-xx-xx.eu-central-1.compute.amazonaws.com-centos.AAZFTHkT5xXXXXXX" too long for Unix domain socket
    while connecting to 52.xx.xx.xx:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

为什么还是太长了?

【问题讨论】:

标签: ssh amazon-ec2 ansible


【解决方案1】:

限制为 104 或 108 个字符。 (我在网上找到了不同的说法)

您在错误消息中 XXX 删除了一些敏感信息,因此不清楚您的路径实际有多长。

我猜%(directory)s 被替换为用户文件夹中的.ansible 目录。删除它并直接使用您的用户文件夹将为您节省 12 个字符:

control_path=~/%%h‐%%r

当然,这将使用控制套接字向您的主目录发送垃圾邮件。

根据用户名的实际长度,您可以查看是否可以创建另一个目录或在任何地方找到更短的路径。比如我用~/.ssh/tmp/%%h_%%r

只少了 3 个字符,但已经足够了。

最后,如果这些都没有帮助,您仍然可以使用/tmp 来存储套接字。但请注意,任何有权访问该计算机上的 /tmp 的人都可能能够使用您的套接字。

【讨论】:

  • 另外,如果您的主机名很长,您可以使用带有control_path = %(directory)s/%%C 的哈希作为suggested here
  • 感谢您的回答。效果很好。
【解决方案2】:

自定义control_path 为我解决了这个问题。这是在不向主目录发送垃圾邮件的情况下执行此操作的方法。

control_path 默认为 (documentation):

control_path=%(directory)s/ansible-ssh-%%h-%%p-%%r

编辑 ansible 配置。

vim ~/.ansible.cfg

以下是带有新 control_path 值的示例文件内容:

[defaults]
inventory=/etc/ansible/hosts

[ssh_connection]
control_path=%(directory)s/%%h-%%r
control_path_dir=~/.ansible/cp

【讨论】:

  • +1 是唯一一个不认为我是 ansible 专家的答案(等等……我在哪里设置 control_path?哦,THERE!
【解决方案3】:

只是补充一点,因为错误表明这个问题通常发生在 Unix 域套接字的控制路径太长时,因此,特定于 ansible。

您可以通过更新配置文件以使用 %C 格式而不是 %r@%h:%p 轻松解决此问题,如下所示:

$ mkdir ~/.ssh/control 
$ vim ~/.ssh/config 
Host *
  ControlPath ~/.ssh/control/%C
  ControlMaster auto

更多细节:man ssh_config 将 %C 格式定义为“连接的哈希:%l%h%p%r”。并参考here

【讨论】:

    【解决方案4】:

    对我来说,Ansible 配置文件丢失了。之后它对我有用。

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 2018-05-16
      相关资源
      最近更新 更多