Я новый пользователь Jenkins. Я пытаюсь запустить скрипт оболочки как часть этапа сборки в Jenkins. Этот скрипт содержит команду, scp
которая передает .tar
файл на удаленный сервер.
Когда я запускаю этот скрипт, он работает нормально и выдает желаемый результат, но при его запуске через Jenkins возникает ошибка:
Host key verification failed.
lost connection
До этой scp
команды скрипт выполняется успешно, затем пропускает scp
шаг.
Я даже не могу подключиться к удаленному серверу по SSH или SCP через Jenkins.
Посоветуйте, пожалуйста, что тут можно сделать? Какие плагины нужно установить для ssh
и scp
?
решение1
Ключ hosts необходимо добавить в файл "known_hosts" клиента, в вашем случае пользователя, под учетной записью которого запущен сервер jenkins. Итак, что вам нужно сделать, это:
- Включить вход по ssh для пользователя jenkins
- войти как jenkins
- ssh к удаленному серверу
- на вопрос «нужно ли добавлять идентификационные данные сервера..» ответьте «да»..
Тогда все готово. После этого скрипт сможет выполнить scp с открытым ключом пользователя.
решение2
Короче говоря, вам нужно добавить ssh-ключ пользователя Jenkins на сервер, на который вы пытаетесь войти как этот пользователь.
Подробности:
Войдите на сервер jenkins, затем:
sudo passwd jenkins
дважды введите пароль, который вы хотите дать пользователю jenkins, затем:
su jenkins
cd
ssh-keygen
Нажмите Enter для всех опций. Затем скопируйте новые ключи ssh на сервер, на который вы хотите скопировать:
scp .ssh/id_rsa.pub user@newserver:/home/user/jenkins_key
Если будет предложено, нажмите «да», чтобы продолжить.
Затем войдите на этот сервер как этот пользователь, затем:
ssh user@server
и введите пароль, затем
cd .ssh
ls -lah
если нет 'authorized_keys', то:
cd .ssh
touch authorized_keys
Если файл «authorized_keys» присутствует, проигнорируйте предыдущий шаг, затем:
cd
cat jenkins_key >> .ssh/authorized_keys
rm -rf ./jenkins_key
выйдите из системы/выйдите из сервера. Затем вернитесь на сервер Jenkins:
ssh user@newserver
Вам следует войти в систему напрямую, без запросов или ввода пароля.
Теперь снова запустите задание scp в Jenkins.
решение3
Я нашел решение проблемы. 1. Я создал новую пару ключей shh под пользователем jenkins. 2. Добавил ключ .pub на удаленный сервер. При выполнении ssh с сервера jenkins используется недавно сгенерированный закрытый ключ. Теперь и ssh, и scp работают как часть этапа сборки. Спасибо
решение4
Плагин SSH-агента
Этот плагин позволяет вам предоставлять учетные данные SSH для сборок через ssh-agent в Jenkins. https://plugins.jenkins.io/ssh-agent/
Если вы снова увидите эту ошибку, выполните эту команду один раз из задания Jenkins:
ssh -o StrictHostKeyChecking=no user@host hostname
После этого вы можете просто запустить ssh из задания Jenkins:
ssh user@host hostname