首页 > 解决方案 > Jenkins 通过 ssh 发布显示错误“jenkins.plugins.publish_over.BapPublisherException:无法添加 SSH 密钥。”

问题描述

为了使用 ssh 将 jenkins 与远程服务器连接,我在 jenkins 中安装了 publish over SSH 插件。但配置后它显示错误 jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key。消息[无效的私钥:[B@7934add]

最初,我在服务器中以 jenkins 用户身份登录为“sudo su jenkins”在此之后,我输入“ssh-keygen”并给出密码短语值并给出 jenkins 配置中的密钥路径。

我的密码是我在创建 ssh-keygen 时给出的值

我的密码短语/密码与我在创建 ssh-keygen 时给出的值相同。我对这一点不正确

在此处输入图像描述

在此处输入图像描述

但是当我单击测试配置按钮时我的所有配置都显示“

Failed to connect or change directory

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

标签: jenkinssshjenkins-pipeline

解决方案


key 的路径应该是private key的路径id_rsa

不是公共的id_rsa.pub(这确实是无效的......私钥)

创建 SSH 密钥对已生成:

  • /var/lib/jenkins/.ssh/id_rsa(私钥)
  • /var/lib/jenkins/.ssh/id_rsa.pub(公钥)

使用旧的 PEM 格式(不是新的 OpenSSH 格式)

ssh-keygen -t rsa -C "jenkins" -m PEM -P "" -f /var/lib/jenkins/.ssh/id_rsa

要打开 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


推荐阅读