Помилка перевірки ключа Дженкінса Хоста


164

У мене проблема з джинкінами , налаштування "git", показує таку помилку:

Failed to connect to repository : Command "git ls-remote -h https://person@bitbucket.org/person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: fatal: Authentication failed

Я перевірив ssh :

git@bitbucket.org:person/projectmarket.git

Це помилка:

Failed to connect to repository : Command "git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly

Я також робив ці кроки за допомогою "SSH ключа".

Вхід під Дженкінсом

sudo su jenkins

Скопіюйте ключ github у папку Jenkins .ssh

cp ~/.ssh/id_rsa_github* /var/lib/jenkins/.ssh/

Перейменуйте клавіші

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

але все ще не працює сховище git у джинкінах .

дякую за допомогу !.



не існує жодного користувача jenkins
IceFire

Відповіді:


183

Перейдіть до jenkinsкористувача та запустіть команду вручну:

git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD

Ви отримаєте стандартне попередження SSH під час першого підключення до нового хоста через SSH:

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?

Введіть yesі натисніть Enter. Тепер bitbucket.orgу ~/.ssh/known_hostsфайл буде доданий хост-ключ, і ви більше не отримаєте цю помилку в Дженкінсі.


6
показати це: У дозволі відмовлено (publickey). фатально: віддалений кінець повісив трубку несподівано
AM Mérida

6
Правильно, але це зовсім інша помилка. Тепер вам потрібно піти додати ваш відкритий ключ у сховище на bitbucket.org.
ctc


2
+1 для "worksforme", мали точно таку ж проблему. Створений id_rsa для належного користувача, chmod-ed до jenkins, доданий відкритий ключ, все ще не працює. Спробувавши git як sudo -u jenkins, вийшов файл knonwn_hosts, вирішивши проблему.
sibidiba

3
Потрібно запустити його як користувач, який управляє Дженкінсом. У більшості систем, як правило, він працює як окремий користувач (наприклад, користувач "jenkins"). Отже, вам слід перейти до цього користувача, щоб переконатися, що адреса для bitbucket.org додана до ~ / .ssh / known_hosts.
ctc

43

Дженкінс - це сервісний рахунок, він не має оболонки за дизайном. Загальновизнано, що сервісні рахунки. не має можливості інтерактивного входу.

Щоб вирішити "Не вдалося перевірити ключ Дженкінс Хост", виконайте наступні дії. Я використовував меркуріал з джинкінами.

1) Виконайте наступні команди на терміналі

             $ sudo su -s /bin/bash jenkins

вказати пароль

2) Створіть відкритий приватний ключ за допомогою наступної команди:

              ssh-keygen

Ви можете бачити вихід:

Generating public/private rsa key pair. 
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

3) Натисніть Enter -> Не дайте жодної парольної фрази -> натисніть Enter

             Key has been generated

4) перейдіть до -> cat /var/lib/jenkins/.ssh/id_rsa.pub

5) Копіювати ключ з id_rsa.pub

6) Вихід з баш

7) ssh@yourrepository

8) vi .ssh/authorized_keys

9) Вставте ключ

10) вихід

11) Вручну ввійти в систему ртутного сервера

Примітка. Просимо ввійти вручну, інакше jenkins знову дасть помилку "перевірка хоста не вдалася"

12) як тільки це зроблено вручну. Тепер перейдіть до Дженкінса і дайте збір

Насолоджуйтесь !!!

Щасти


ЯКІЙ пароль тут запитується?
IceFire

26

Або ви можете використовувати:

ssh -oStrictHostKeyChecking=no host

Це буде невпевнено (людина в середині нападу), але найпростіше рішення.

Кращий спосіб зробити це - генерувати правильні відображення між хостом та ip-адресою, тому sshне буде скаржитися:

#!/bin/bash

for domain in "github.com" "bitbucket.org"; do
    sed -i "/$domain/d" ~/.ssh/known_hosts
    line=$(ssh-keyscan $domain,`nslookup $domain | awk '/^Address: / { print $2 ; exit }'`)
    echo $line >> ~/.ssh/known_hosts
done

Уривок із суті .


3
Це відкриє вам потенційні MITM-атаки.
ctc

1
Ви можете додати -oStrictHostKeyChecking = ні та підключити один раз, що додасть хост у файл знаних_хостів (те саме, що коли ви ssh у командному рядку та введіть так, щоб додати ключ до відомого файла_hosts), а потім видалити цю опцію після цього.
крупан

6

У мене була така ж проблема, я її виправляю так:

скинути дозвіл на id_rsa * лише для поточного користувача, жодної групи немає

chmod o-rwx ~/.ssh/id*
chmod G-rwx ~/.ssh/id*

ls -lart ~/.ssh/


-rw-------  1 jenkins nogroup  398 avril  3 09:34 id_rsa.pub
-rw-------  1 jenkins nogroup 1675 avril  3 09:34 id_rsa

І ясно ~ / .ssh / know_hosts

Тепер підключіться як джинкіни

sudo su jenkins

Спробуйте команди джинкінів

git ls-remote -h git@bitbucket.org:user/project.git HEAD

Якщо не з’явиться жодна проблема, тепер jenkins зможе підключити репо (як мінімум для мене ^^)


1
Наведена вище команда (chmod G-rwx ~ / .ssh / id *) для зміни дозволу групи не вдалася. Нижче працювали за бажанням. chmod g-rwx ~ / .ssh / id *
самаітра


3
  • Переконайтеся, що ми не редагуємо жодних властивостей sshd_config за замовчуванням, щоб пропустити помилку

  • Помилка перевірки хоста - безумовно, що у known_hostsфайлі відсутня запис хоста

  • Увійдіть на сервер, де процес не працює, і виконайте наступне:

    1. Судо для користувача, який запускає процес

    2. ssh-copy-id destinationuser@destinationhostname

    3. Він підкаже так, як це вперше, скаже «так», а також запитає пароль вперше:

      The authenticity of host 'sample.org (205.214.640.91)' can't be established.
      RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
      Are you sure you want to continue connecting (yes/no)? *yes*
      

      Підказка пароля? введіть пароль

    4. Тепер з сервера, де працює процес, робіть ssh destinationuser@destinationhostname. Він повинен увійти без пароля.

      Примітка. Не змінюйте дозволи файлів за замовчуванням для файлів у .ssh каталозі користувача, у вас виникнуть різні проблеми


на кроці 3 може статися так, що вам буде запропоновано ключ, який вже є у файлі, але вам слід продовжити ці 4 кроки, і якщо ви можете увійти без пароля від користувача jenkins без пароля, тоді все налаштовано.
Ракібул Хак

3

Що стосується способу вирішення (наприклад, підлеглий Windows), визначте наступну змінну середовища у глобальних властивостях:

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"

Дженкінс, глобальні властивості, змінні середовища, GIT_SSH_COMMAND

Примітка. Якщо ви не бачите опцію, вам, ймовірно, потрібен плагін EnvInject .


3

Скопіюйте ключі хоста з бітбукета та github:

ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa bitbucket.org)" >> /root/.ssh/known_hosts'
ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa github.com)" >> /root/.ssh/known_hosts'

2

Найкраще ви можете просто використовувати ваш "git url" у форматі "https" у форматі Jenkinsfile або де завгодно.

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'


2

SSH

Якщо ви намагаєтеся з SSH, помилка перевірки ключа хоста може виникнути через декілька причин. Виконайте ці дії, щоб подолати всі причини.

  1. Встановіть змінну оточення як ДОМАШНУ і вкажіть адресу як кореневу директорію .ssh папки. наприклад: - Якщо ваш .ssh зберігається всередині папки Ім'я . C: / Користувачі / Ім'я.
  2. Тепер переконайтеся, що відкритий ключ SSH також надається у посиланні сховища. Або це github, bitbucket або будь-який інший.
  3. Відкритий git bash. І спробуйте клонувати проект із сховища. Це допоможе додати URL-адресу вашого сховища у відомий файл_host, який автоматично створюється у папці .ssh.
  4. Тепер відкрийте джинкіни і створіть нову роботу. Потім натисніть на налаштування.
  5. надайте URL-адресу клонування у керуванні вихідним кодом під Git. URL-адресу слід починати з git@github.com / ......... або ssh: // proje ........
  6. У розділі Критерію потрібно додати ім’я користувача та пароль форми вашого сховища, яку ви клонуєте в проект. Виберіть цей обліковий запис.
  7. А тепер застосуйте та збережіть конфігурацію.
  8. Бінго! Почніть розробляти проект. Сподіваюся, зараз ви не отримаєте жодної помилки підтвердження ключа хоста!

2
  1. увійти як jenkins, використовуючи: "sudo su -s / bin / bash jenkins"
  2. git клонує потрібне репо, що викликає помилку ключа
  3. він попросить вас додати ключ, показавши Так / Ні (введіть так чи у)

Це воно!

тепер ви можете знову запустити роботу з джинкінами.

Сподіваюся, ви вирішите цю проблему.


2

Я зіткнувся з цією проблемою, і виявилося, що проблема в тому, що сервіс jenkins не запускався як користувач jenkins. Тож виконання команд, як користувач jenkins, працювало чудово.


1

Спробуйте

ssh-keygen -R ім'я хоста

-R ім'я хоста Видаляє всі ключі, що належать імені хоста, з відомого файлу_hosts. Цей параметр корисний для видалення хешованих хостів

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.