我正在尝试从 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 私钥行末尾的换行符,我确实添加了换行符并运行了管道,但最终失败了
这可能是密钥格式的问题。 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
。
不确定这是否对任何人感兴趣...... 我和TO有同样的问题。将密钥从 .pem 文件复制到不同操作系统平台(例如 Linux / Windows)上的 Jenkins Web 界面时,似乎存在字符编码(尤其是换行符)问题。在我的例子中,将 pem 文件中的密钥复制粘贴到同一台计算机 (Linux) 上的 Jenkins Web 界面中解决了问题。