Ошибка: SSH Ошибка: unix_listener: слишком долго для сокета домена Unix

Это известная проблема, и я нашел решение, но оно не работает для меня.

Сначала у меня было:

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

Но после повторного использования моего вопроса я могу ошибаться в том, что он слишком длинный.

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.

Почему это еще слишком долго?

Ответ 1

Предел составляет 104 или 108 символов. (Я нашел различные заявления в Интернете)

Вы уведомили некоторую конфиденциальную информацию в сообщении об ошибке, чтобы не допустить, насколько долго ваш путь на самом деле.

Я думаю, %(directory)s заменяется на каталог .ansible в вашей папке пользователей. Удаление этого и использование непосредственно вашей папки пользователя позволит вам сохранить 12 символов:

control_path=~/%%h‐%%r

Конечно, это приведет к спаму вашего домашнего каталога с помощью сокетов управления.

В зависимости от фактической длины вашего имени пользователя вы можете увидеть, можете ли вы просто создать другой каталог или найти более короткий путь в любом месте. Например, я использую ~/.ssh/tmp/%%h_%%r

Только 3 символа меньше, но это достаточно.

Наконец, если это не помогает, вы все равно можете вернуться с помощью /tmp для хранения сокетов. Но имейте в виду, что любой, кто имеет доступ к /tmp на этой машине, может использовать ваши сокеты тогда.

Ответ 2

Настройка control_path решает проблему для меня. Вот как это сделать без спама в домашнем каталоге.

control_path по умолчанию (документация):

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

Отредактировать настраиваемую конфигурацию.

vim ~/.ansible.cfg

Вот пример содержимого файла с новым значением control_path:

[defaults]
inventory=/etc/ansible/hosts

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

Ответ 3

Для меня отсутствовал файл Ansible config. После этого он работал у меня.