Публикация Jenkins через ssh показывает ошибку «jenkins.plugins.publish_over.BapPublisherException: не удалось добавить ключ SSH». - PullRequest
0 голосов
/ 11 июня 2019

Для соединения jenkins с удаленным сервером через ssh я установил публиковать через плагин SSH в jenkins. Но после настройки отображается сообщение об ошибке как jenkins.plugins.publish_over.BapPublisherException: не удалось добавить ключ SSH. Сообщение [неверный приватный ключ: [B @ 7934add]

Изначально я вошел как пользователь jenkins на сервере как "sudo su jenkins" После этого я набрал «ssh-keygen», дал значение ключевой фразы и путь к ключу в конфигурации jenkins.

моей парольной фразой является значение, которое я дал при создании ssh-keygen

мой пароль / пароль совпадают со значением, которое я указал при создании ssh-keygen. Я не прав с этим пунктом

enter image description here

enter image description here

Но во всех моих настройках, когда я нажимаю кнопку тестовой конфигурации, отображается «

Failed to connect or change directory

jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@3085b39b]"

Ответы [ 2 ]

1 голос
/ 11 июня 2019

Путь к ключу должен быть путем к приватному ключу id_rsa.

Не публичному id_rsa.pub (который действительно является недействительным ... закрытым ключом)

При создании пары ключей SSH сгенерировано:

  • /var/lib/jenkins/.ssh/id_rsa (закрытый ключ)
  • /var/lib/jenkins/.ssh/id_rsa.pub (открытый ключ)

Чтобы открыть сеанс SSH, необходимо скопировать открытый ключ на удаленный сервер в /home/ubuntu/.ssh/authorized_keys.
Если у вас есть пароль удаленного пользователя Ubuntu, вы можете использовать ssh-copy-id команда , как здесь :

ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa ubuntu@remoteserverip

Затем вы можете проверить, как sudo su jenkins, соединение с ssh -Tv ubuntu@remoteserverip

0 голосов
/ 11 июня 2019

Вам потребуется создать открытый / закрытый ключ в качестве пользователя Jenkins на вашем сервере Jenkins, а затем скопировать открытый ключ пользователю, с которым вы хотите выполнить развертывание на целевом сервере.

Шаг 1, сгенерируйте открытый и закрытый ключ на сервере сборки как пользователь jenkins

build1:~ jenkins$ whoami
jenkins
build1:~ jenkins$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Created directory '/var/lib/jenkins/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa.
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
[...] 
The key's randomart image is:
[...]
build1:~ jenkins$ ls -l .ssh
total 2
-rw-------  1 jenkins  jenkins  1679 Feb 28 11:55 id_rsa
-rw-r--r--  1 jenkins  jenkins   411 Feb 28 11:55 id_rsa.pub 
build1:~ jenkins$ cat .ssh/id_rsa.pub
ssh-rsa AAAlskdjfalskdfjaslkdjf... jenkins@myserver.com

Шаг 2, вставьте содержимое файла pub на целевой сервер.

target:~ bob$ cd .ssh
target:~ bob$ vi authorized_keys (paste in the stuff which was output above.)
Make sure your .ssh dir has permissoins 700 and your authorized_keys file has permissions 644

Шаг 3, настройте Jenkins

In the jenkins web control panel, nagivate to "Manage Jenkins" -> "Configure System" -> "Publish over SSH"
Either enter the path of the file e.g. "var/lib/jenkins/.ssh/id_rsa", or paste in the same content as on the target server.
Enter your passphrase, server and user details, and you are good to go!
...