ssh. какая версия ssh у тебя на ansible хосте?
Нет маршрута и не может найти конечный хост
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020
Но в ручную могу работать
ssh -p 22 user@ip тоже работает
данная ошибка как я уже сказал связана с тем что на хосте на который вы ранее уже заходили и хост ключ которой записан в $HOME/.ssh/config по какой-то причине изменился ключ. первое что надо сделать понять по какой причине это произошло. это бывает в разных случаях: 1) вы налили новую ос на машину. при наливании новой ос генерятся новые ключи. нужно очистить старый ключ из $HOME/.ssh/known_hosts того пользователя под которым вы запускаете ansible 2) кто-то изменил ip адрес машины и переставил её на другую машину. вы должны убедится что у вас правильно записаны адреса. если всё ок - повторяете процедуру очистки 3) каким-то образом подменили хост-ключ машины на которую вы заходите. следует убедится что машина не взломана и это сделано кем-то осознанно. после чего опять-таки очистить такой ключ ни в коем случае не следует бездумно очищать ключ из known_hosts. взяв это в привычку вы практически гарантированно даёте возможность "поиметь" вас. также в современных ssh существует настройка, которая позволяет облегчить работу с клиентами типа ансибл которые не умеют самостоятельно записывать в known_hosts. следует прописать в конфиге $HOME/.ssh/config: StrictHostKeyChecking accept-new (также возможно это прописать в конфиге для всех пользователей машины /etc/ssh/ssh_config (а лучше создать файл с такой строчкой в /etc/ssh/ssh_config.d/)
У меня ансибл работает с password ами, если поменять их на sshkey все сработает?
дело не в том как вы авторизуетесь на сервере. это не связанные вещи. просто при подключении клиент всегда проверяет ключ сервера.
Как бьіть в ci системах, где ансибл ранится в контейнере, каждьій раз свежем?
ну тут не проблема, тк он не будет знать о старых записях
script: - chmod o-w . - mkdir -p ~/.ssh - eval $(ssh-agent -s) - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config - echo $ssh_key | base64 -d > ~/.ssh/id_ed25519 - chmod -R 0700 ~/.ssh
можно и в ansible.cfg указать в ssh_args
так проще потому что у всех будет любителей запустить ансибл работать. но надо тогда указать что ssh client должен быть современный. ну обычно это делают в README...
прописал у себя строчку в .ansible.cfg но при выполнении playbook на новый хост выдает запрос "Are you sure you want to continue connecting (yes/no/[fingerprint])?" из вашего ответа я понял что такого запроса не должно быть
-o StrictHostKeyChecking=accept-new так?
openssh клиент какой версии?
[defaults] inventory = /home/ansi/ansible/host/inventory StrictHostKeyChecking = accept-new
это ssh option, см. доку
О, полезная опция.. а то no тупой вариант. Не прошло и 20 лет? )
прописал в /etc/ssh/ssh_config заработало, спс, срано что в файле .ansible.cfg не сработало. спасибо за подсказку
Обсуждают сегодня