Вопрос или проблема
Спасибо, что уделили время и посмотрели,
Недавно я обновил (проект AlmaLinux ELevate) 3 сервера с AlmaLinux 8 до AlmaLinux 9 (2 года назад эти же серверы были переведены с CentOS 7 на AlmaLinux 8). Обновление прошло flawlessly, и после обновления мне нужно было переустановить только 1 пакет, Zabbix-Agent2. Я мог получить доступ к сервисам на этих серверах, веб-сайты были идеально доступны, по SSH у меня не было проблем с доступом к системе. даже ansibleuser мог быть использован для аутентификации по ssh с помощью ключевой пары без проблем. Но когда я использую ansible для запуска плейбука на этих серверах, который всегда работал в прошлом и все еще работает на всех наших других машинах с Ubuntu и AlmaLinux, я получаю следующие ошибки на 3 машинах:
[ /etc/ansible ]$ ansible-playbook playbooks/update-linux.yml -C -l ClamAV -vvv
ansible-playbook [core 2.14.14]
конфигурационный файл = /etc/ansible/ansible.cfg
настроенный модуль поиска = ['/home/ansibleuser/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
местоположение модуля ansible python = /usr/lib/python3.9/site-packages/ansible
местоположение коллекции ansible = /home/ansibleuser/.ansible/collections:/usr/share/ansible/collections
местоположение исполняемого файла = /usr/bin/ansible-playbook
версия python = 3.9.18 (основная, 23 августа 2024 года, 00:00:00) [GCC 11.4.1 20231218 (Red Hat 11.4.1-3)] (/usr/bin/python3)
версия jinja = 3.1.2
libyaml = True
Используя /etc/ansible/ansible.cfg в качестве конфигурационного файла
BECOME пароль:
[WARNING]: Ошибка при загрузке файла пароля хранилища (по умолчанию): Необходимо указать пароль хранилища для расшифровки данных
Пароль хранилища:
host_list отказался от разбора /etc/ansible/hosts, так как он не прошел метод verify_file()
script отказался от разбора /etc/ansible/hosts, так как он не прошел метод verify_file()
auto отказался от разбора /etc/ansible/hosts, так как он не прошел метод verify_file()
Разобран /etc/ansible/hosts источник инвентаризации с помощью yaml плагина
Пропуская обратный вызов 'default', так как у нас уже есть стандартный вывод.
Пропуская обратный вызов 'minimal', так как у нас уже есть стандартный вывод.
Пропуская обратный вызов 'oneline', так как у нас уже есть стандартный вывод.
PLAYBOOK: update-linux.yml *******************************************************************************************************************************
2 игры в playbooks/update-linux.yml
PLAY [landauer] ******************************************************************************************************************************************
TASK [Сбор фактов] ***********************************************************************************************************************************
путь задачи: /etc/ansible/playbooks/update-linux.yml:2
<10.1.1.22> УСТАНАВЛИВАЕМ SSH СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: ansibleuser
<10.1.1.22> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ansibleuser"' -o ConnectTimeout=5 -o 'ControlPath="/home/ansibleuser/.ansible/cp/267bb41463"' 10.1.1.22 '/bin/sh -c '"'"'echo ~ansibleuser && sleep 0'"'"''
<10.1.1.22> (0, b'/home/ansibleuser\n', b'')
<10.1.1.22> УСТАНАВЛИВАЕМ SSH СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: ansibleuser
<10.1.1.22> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ansibleuser"' -o ConnectTimeout=5 -o 'ControlPath="/home/ansibleuser/.ansible/cp/267bb41463"' 10.1.1.22 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /home/ansibleuser/.ansible/tmp `"&& mkdir "` echo /home/ansibleuser/.ansible/tmp/ansible-tmp-1728362452.3175566-4768-111779545868462 `" && echo ansible-tmp-1728362452.3175566-4768-111779545868462="` echo /home/ansibleuser/.ansible/tmp/ansible-tmp-1728362452.3175566-4768-111779545868462 `" ) && sleep 0'"'"''
<10.1.1.22> (0, b'ansible-tmp-1728362452.3175566-4768-111779545868462=/home/ansibleuser/.ansible/tmp/ansible-tmp-1728362452.3175566-4768-111779545868462\n', b'')
<ClamAV> Попытка обнаружить интерпретатор python
<10.1.1.22> УСТАНАВЛИВАЕМ SSH СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: ansibleuser
<10.1.1.22> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ansibleuser"' -o ConnectTimeout=5 -o 'ControlPath="/home/ansibleuser/.ansible/cp/267bb41463"' 10.1.1.22 '/bin/sh -c '"'"'echo PLATFORM; uname; echo FOUND; command -v '"'"'"'"'"'"'"'"'python3.11'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'python3.10'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'python3.9'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'python3.8'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'python3.7'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'python3.6'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'python3.5'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'/usr/bin/python3'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'/usr/libexec/platform-python'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'python2.7'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'/usr/bin/python'"'"'"'"'"'"'"'"'; command -v '"'"'"'"'"'"'"'"'python'"'"'"'"'"'"'"'"'; echo ENDFOUND && sleep 0'"'"''
<10.1.1.22> (0, b'PLATFORM\nLinux\nFOUND\n/usr/bin/python3.9\n/usr/bin/python3\n/usr/libexec/platform-python\n/usr/bin/python\n/usr/bin/python\nENDFOUND\n', b'')
<10.1.1.22> УСТАНАВЛИВАЕМ SSH СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: ansibleuser
<10.1.1.22> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ansibleuser"' -o ConnectTimeout=5 -o 'ControlPath="/home/ansibleuser/.ansible/cp/267bb41463"' 10.1.1.22 '/bin/sh -c '"'"'/usr/bin/python3.9 && sleep 0'"'"''
<10.1.1.22> (0, b'{"platform_dist_result": [], "osrelease_content": "NAME=\\"AlmaLinux\\"\\nVERSION=\\"9.4 (Seafoam Ocelot)\\"\\nID=\\"almalinux\\"\\nID_LIKE=\\"rhel centos fedora\\"\\nVERSION_ID=\\"9.4\\"\\nPLATFORM_ID=\\"platform:el9\\"\\nPRETTY_NAME=\\"AlmaLinux 9.4 (Seafoam Ocelot)\\"\\nANSI_COLOR=\\"0;34\\"\\nLOGO=\\"fedora-logo-icon\\"\\nCPE_NAME=\\"cpe:/o:almalinux:almalinux:9::baseos\\"\\nHOME_URL=\\"https://almalinux.org/\\"\\nDOCUMENTATION_URL=\\"https://wiki.almalinux.org/\\"\\nBUG_REPORT_URL=\\"https://bugs.almalinux.org/\\"\\n\\nALMALINUX_MANTISBT_PROJECT=\\"AlmaLinux-9\\"\\nALMALINUX_MANTISBT_PROJECT_VERSION=\\"9.4\\"\\nREDHAT_SUPPORT_PRODUCT=\\"AlmaLinux\\"\\nREDHAT_SUPPORT_PRODUCT_VERSION=\\"9.4\\"\\nSUPPORT_END=2032-06-01\\n"}\n', b'')
Используя модульный файл /usr/lib/python3.9/site-packages/ansible/modules/setup.py
<10.1.1.22> PUT /home/ansibleuser/.ansible/tmp/ansible-local-47643ehs1jje/tmprhb1042q TO /home/ansibleuser/.ansible/tmp/ansible-tmp-1728362452.3175566-4768-111779545868462/AnsiballZ_setup.py
<10.1.1.22> SSH: EXEC scp -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ansibleuser"' -o ConnectTimeout=5 -o 'ControlPath="/home/ansibleuser/.ansible/cp/267bb41463"' /home/ansibleuser/.ansible/tmp/ansible-local-47643ehs1jje/tmprhb1042q '[10.1.1.22]:/home/ansibleuser/.ansible/tmp/ansible-tmp-1728362452.3175566-4768-111779545868462/AnsiballZ_setup.py'
<10.1.1.22> УСТАНАВЛИВАЕМ SSH СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: ansibleuser
<10.1.1.22> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="ansibleuser"' -o ConnectTimeout=5 -o 'ControlPath="/home/ansibleuser/.ansible/cp/267bb41463"' 10.1.1.22 '/bin/sh -c '"'"'rm -f -r /home/ansibleuser/.ansible/tmp/ansible-tmp-1728362452.3175566-4768-111779545868462/ > /dev/null 2>&1 && sleep 0'"'"''
<10.1.1.22> (0, b'', b'')
фатальная ошибка: [ClamAV]: НЕДОСТУПЕН! => {
"changed": false,
"msg": "Не удалось подключиться к хосту через scp: Соединение закрыто\r\n",
"unreachable": true
}
В примере я использовал сервер ClamAV, но на 2 других серверах у меня такая же проблема.
Другие машины AlmaLinux в нашей настройке были установлены с нуля с AlmaLinux 9, и плейбук работает нормально.
Я также заметил, что при запуске DNF выдает мне 1 предупреждение:
предупреждение: Подпись не поддерживается. Алгоритм хеширования SHA1 недоступен.
Я уже нашел статью об этом на redHat, в которой объясняется, что с помощью команды: “update-crypto-policies –set FUTURE” я мог бы установить сервер на более новую криптополитику SHA256/512. Но тогда я теряю ВСЕ возможные коммуникации с этим сервером, кроме HTTP(s) и физической консоли (через vCenter). Я думаю, это должно быть связано с этим, или мне нужно что-то перегенерировать. Но есть ли кто-то, кто уже нашел решение/тему, чтобы помочь мне решить эту проблему? У меня есть еще 2 сервера, которые немного более критичны для компании, поэтому не хочу, чтобы они долго страдали от этой проблемы.
Большое спасибо за любую помощь.
Ах, я нашел различие в файле sshd_config:
На старой машине, обновленной с CentOS на EL8 –> EL9, строка: Subsystem sftp /usr/lib/openssh/sftp-server, а на других ново установленныx машинах AlmaLinux она установлена на: Subsystem sftp internal-sftp. После изменения параметра и перезапуска сервиса все снова заработало как должно.
Я хочу поблагодарить форум AlmaLinux за предоставленные подсказки.
Ответ или решение
Конечно! Вот полный ответ на вопрос, касающийся доступа Ansible к серверу EL9 после его обновления с EL8.
Проблема доступа Ansible к серверам после обновления с EL8 на EL9
Здравствуйте!
Судя по вашему описанию, проблема, с которой вы столкнулись, вызывает ошибки при выполнении Ansible playbook’ов на ваших серверах AlmaLinux 9, которые были обновлены с AlmaLinux 8. Вы упомянули о том, что установка прошла гладко, однако возникли ошибки при использовании Ansible.
Возможные причины и их решения:
-
Проблемы с настройками SSH:
Ошибка"Failed to connect to the host via scp: Connection closed"
указывает на проблемы с подключением по протоколу SCP (Secure Copy Protocol), который используется Ansible для передачи файлов во время выполнения плейбуков.Обратите внимание на разницу в файле конфигурации
sshd_config
между вашими серверами. Вы заметили, что у ваших обновленных серверов строка:Subsystem sftp /usr/lib/openssh/sftp-server
На новых установках стоит:
Subsystem sftp internal-sftp
Изменив эту строку на
internal-sftp
и перезапустив службу SSH, вы ощутили улучшение. Замена наinternal-sftp
должна улучшить поддержку SFTP в Ansible и устранить похожие проблемы. -
Проблемы с криптографическими политиками:
Вы также упомянули предупреждение"Signature not supported. Hash algorithm SHA1 not available."
при использовании DNF. Обновление криптографических политик, используя команду:update-crypto-policies --set FUTURE
может ограничить доступность некоторых более старых методов аутентификации, что может быть связано с вашими трудностями при подключении к серверам.
После изменения криптографической политики, необходимо убедиться, что SSH на ваш сервер поддерживает необходимые алгоритмы. Вам может потребоваться изменить параметры в файле
sshd_config
, такие какCiphers
,MACs
, чтобы дополнительно разрешить доступ по новым стандартам. -
Аутентификация и настройки Ansible:
Убедитесь, что ваша конфигурация Ansible настроена правильно и не требует дополнительных модификаций для работы с новыми параметрами SSH. Проверьте, что ваш пользователь (ansibleuser
) имеет нужные разрешения и возможность выполнения команд по SSH без необходимости ввода пароля.
Заключение:
С учетом ваших наблюдений и описанных изменений, кажется, вы на правильном пути к восстановлению функциональности Ansible. Изменение параметров SFTP и возможные обновления в конфигурации SSH могут устранить возникшие проблемы. Если у вас остаются сложности, считаю полезным также проверить логи SSH для более детальной диагностики.
Если нужны дополнительные рекомендации или помощь, дайте знать!
С уважением,
[Ваше Имя],
Эксперт по системам и DevOps.