Я запускаю как ведущие, так и подчиненные Jenkins как контейнеры Docker, используя образ jenkins/jenkins:lts и jenkins/ssh-slave в Ubuntu. Ниже приведены шаги:
- Запустите
ssh-keygen
внутри контейнера jenkins-master (docker exec -it container_id bash
), чтобы сгенерировать ключи ssh - Добавлен сгенерированный открытый ключ в файл author_keys внутри контейнера ssh-slave с использованием dockerfile
- Добавлен закрытый ключ в учетные данные Jenkins по этой ссылке
Я посмотрел на многие вопросы, связанные с этой проблемой на переполнение стека, но я застрял со следующей ошибкой:
[02/08/19 20:31:06] [SSH] Opening SSH connection to ###.##.#.#:22. [02/08/19 20:31:06] [SSH] SSH host key matches key in Known Hosts file. Connection will be allowed. ERROR: Server rejected the 1 private key(s) for jenkins (credentialId:worker-ssh/method:publickey) [02/08/19 20:31:06] [SSH] Authentication failed. Authentication failed. [02/08/19 20:31:06] Launch failed - cleaning up connection [02/08/19 20:31:06] [SSH] Connection closed.
Шаблон раба в Дженкинс:
Имя: Дженкинс-рабочий
Использование: максимально используйте этот узел
Метод запуска: запуск агента через SSH
Имя хоста: мой ip извлечен из ifconfig
Startegy проверки ключа хоста: известная стратегия проверки файла хоста (.ssh/known_hosts
содержит запись для предоставленного ip хоста)
Dockerfile для ssh-раб
#Docker version 18.09.1
FROM jenkins/ssh-slave
COPY /.ssh/id_rsa.pub /.ssh/authorized_keys
RUN chmod 744 /.ssh/authorized_keys