Jenkins Pipeline连接EC2 SSH失败:私钥格式无效
Jenkins SSH连接EC2私钥格式错误解决方案
问题描述
尝试通过Jenkins的SSH插件连接EC2实例,已将AWS下载的something.pem私钥内容粘贴到Jenkins全局凭据中,但执行ssh-add时提示invalid format错误,添加末尾换行后仍失败,报错日志如下:
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
解决步骤
- 严格检查私钥粘贴完整性:确保粘贴的私钥包含完整的头部
-----BEGIN RSA PRIVATE KEY-----和尾部-----END RSA PRIVATE KEY-----,每一行字符数符合PEM标准(每行64字符),无多余空格、空行或截断。粘贴时不要在头部前或尾部后添加额外空行,仅保留私钥本身的换行。 - 转换私钥为兼容格式:部分新版AWS EC2私钥采用OPENSSH格式,Jenkins ssh-agent插件可能不兼容。在本地执行以下命令将其转换为RSA PEM格式:
转换完成后,将新生成的私钥内容重新粘贴到Jenkins凭据中。ssh-keygen -p -f something.pem -m pem -P "" -N "" - 确认凭据配置正确:在Jenkins全局凭据中选择「SSH Username with private key」类型,用户名填写EC2实例的默认用户名(如
ubuntu、ec2-user,根据AMI类型而定),私钥选择「Enter directly」并粘贴正确的内容。 - 本地验证私钥有效性:先在本地机器通过
ssh-add something.pem和ssh <用户名>@<EC2公网IP>测试私钥能否正常连接EC2,确认私钥本身无问题后再配置到Jenkins。 - 检查Jenkins节点SSH版本:如果Jenkins运行的节点SSH客户端版本过旧,可能不支持新私钥格式。在节点执行
ssh -V查看版本,必要时升级SSH客户端。
内容的提问来源于stack exchange,提问作者Keshav Singh N
相关产品推荐
相关产品推荐

