Невозможно выполнить scp в Jenkins

Невозможно выполнить scp в Jenkins

Я новый пользователь Jenkins. Я пытаюсь запустить скрипт оболочки как часть этапа сборки в Jenkins. Этот скрипт содержит команду, scpкоторая передает .tarфайл на удаленный сервер.

Когда я запускаю этот скрипт, он работает нормально и выдает желаемый результат, но при его запуске через Jenkins возникает ошибка:

Host key verification failed.
lost connection

До этой scpкоманды скрипт выполняется успешно, затем пропускает scpшаг.

Я даже не могу подключиться к удаленному серверу по SSH или SCP через Jenkins.

Посоветуйте, пожалуйста, что тут можно сделать? Какие плагины нужно установить для sshи scp?

решение1

Ключ hosts необходимо добавить в файл "known_hosts" клиента, в вашем случае пользователя, под учетной записью которого запущен сервер jenkins. Итак, что вам нужно сделать, это:

  1. Включить вход по ssh для пользователя jenkins
  2. войти как jenkins
  3. ssh к удаленному серверу
  4. на вопрос «нужно ли добавлять идентификационные данные сервера..» ответьте «да»..

Тогда все готово. После этого скрипт сможет выполнить 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

Связанный контент