Ошибка: 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. После этого он работал у меня.