Skip to content

Deployment, Gitlab: Host key verification failed

Очень распространённая ошибка при запуске процесса деплоймента с использованием CI/CD. Я использую GitLab, но это относится к любым пайплайнаторам.

Вообще-то, это относится к пакету ssh, и именно он сообщает, что происходит соединение с каким-то странным, ранее неизвестным сервером.

Ок, решения три:

  1. "Познакомиться" с сервером перед соединением.
  2. Передавать настройку "забей" в момент запуска команды ssh.
  3. Записать настройку в конфиг ssh, которая будет говорить пакету: "Не парься, всё норм. Соединяйся со всеми серверами".

Второй и третий варианты обсосаны до дыр и всем известны, а кому не известны, те легко могут найти их по запросу Host key verification failed. С моей точки зрения, они выглядят не эстетично в контексте выполнения команд в Docker.

Судите сами.

  1. Знакомимся с сервером
bash
mkdir -m 700 -p ~/.ssh
ssh-keyscan -t rsa example.com >> ~/.ssh/known_hosts
ssh root@example.com 'bash --login -s' < deploy.sh
  1. Отключаем проверку во время запуска ssh-команды
bash
ssh -o StrictHostKeyChecking=no root@example.com 'bash --login -s' < deploy.sh
  1. Просто выключаем проверку
bash
echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
ssh root@example.com 'bash --login -s' < deploy.sh

Все три имеют право на жизнь, но лично мне нравится третий.