jenkins 管道失败 - 错误:无法运行 ssh-add ;说加载密钥时出错 - 格式无效

问题描述 投票:0回答:2

我正在尝试从 jenkins ssh 到 ec2,我已经使用从 aws i,e "something.pem" 下载的密钥在 jenkins 全局中设置了凭据。我复制了内容并粘贴。不知道为什么詹金斯无法读取私钥

`SSH_AGENT_PID=2612
Running ssh-add (command line suppressed)
Error loading key "/var/jenkins_home/workspace/ultibranch-pipeline_jenkins-           
jobs@tmp/private_key_8683577244018302829.key": invalid format
[Pipeline] // sshagent
[Pipeline] End of Pipeline
ERROR: Failed to run ssh-add
Finished: FAILURE`

我寻找解决方案,但大多数人说这是因为 RSA 私钥行末尾的换行符,我确实添加了换行符并运行了管道,但最终失败了

jenkins amazon-ec2 jenkins-pipeline private-key ssh-agent
2个回答
0
投票

这可能是密钥格式的问题。 EC2 提供 PEM 格式的密钥,而 ssh 目前使用不同的格式(此处有冗长的解释)。您可以看到标头中的差异,PEM 文件使用

-----BEGIN RSA PRIVATE KEY-----

和 ssh 键

-----BEGIN OPENSSH PRIVATE KEY-----

有多种方法可以来回转换密钥,但到目前为止最简单的方法是尝试生成新密钥:

ssh-keygen -b 2048 -t rsa

然后尝试将该密钥导入到 Jenkins(复制粘贴生成的

~/.ssh/id_rsa
内容)。如果成功,请登录到目标 EC2 主机并将行从
~/.ssh/id_rsa.pub
附加到
~/.ssh/authorized_keys


0
投票

不确定这是否对任何人感兴趣...... 我和TO有同样的问题。将密钥从 .pem 文件复制到不同操作系统平台(例如 Linux / Windows)上的 Jenkins Web 界面时,似乎存在字符编码(尤其是换行符)问题。在我的例子中,将 pem 文件中的密钥复制粘贴到同一台计算机 (Linux) 上的 Jenkins Web 界面中解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.