Jenkins 的 ssh agent 插件不支持 OPENSSH 格式密钥

错误现象

在使用 jenkins 的 sshagent 插件克隆 git 项目的时候总是报错,错误信息如下:

[ssh-agent] Looking for ssh-agent implementation…
[ssh-agent] Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-Z8Y4g9m9lpwe/agent.22129
SSH_AGENT_PID=22131
Running ssh-add (command line suppressed)
ssh_askpass: exec(/home/chengwei01/jenkins_home/workspace/in-fe_lanxin-pm_test_devops-MR4H5L6MQSZH3QCWWF74KA7SSTTG3JCFV4U2YDOLKBT3MDGFXW2Q/lanxin-mis@tmp/askpass_5624886618215863559.sh): No such file or directory
解决过程

根据 google 搜索得到的信息是: ssh 密钥配置错误。但是重新生成了好多次密钥都不对。我怀疑是不是不支持某种格式的加密方式,于是去看私密钥的格式,反复对比密钥文件发现,私钥头部申明信息不一样。

有效的私钥

1
2
3
-----BEGIN RSA PRIVATE KEY-----
...............................
-----END RSA PRIVATE KEY-----

无效的私钥

1
2
3
-----BEGIN OPENSSH PRIVATE KEY-----
.........................
-----END OPENSSH PRIVATE KEY-----

开头和结尾的申明不同,也就说明这两种的密钥格式不一样,于是我上网查了一下,看到 http://www.panwenbin.com/ 里面介绍,这其实是密钥的两种不同格式,可以相互转换,我尝试转换了一下当前的私钥(一下私钥为假数据)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[hellojukay@local ~]$ ssh-keygen -p -m PEM -f test
[hellojukay@local ~]$ cat test
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA4cDRUJjKc2zjw07SgUulKbK966ki/hqL8L2s2PJ6tDjKH8X7
x5UoT3GMu9CQjFIJ+rw34Yk4zwJt192zxCbI7Zlltd9Er8dLiczubkf4wJxjgXYC
okhBhhOZ0pNdm43DrpChyk5SogXP61Erjej6qxMyyMQjNcy7xAhC9X7b1yKH+8Hh
gajRZUSdf0+3CgBpxZS2CHjBgS3mtLMWoE8tk3uK6S6N/3d2tSzgRTDvWkl0ooKN
UeUk7kPyc/UnfUZZVyAotk4TtjSxlKrtvFoflL9WbFl09xH3uAkqolz872RN78XS
6VopBGWL2hNAvnIczFK2F3C/syGQOA91c9VeXwIDAQABAoIBAEopBlncp3z9g2DQ
jvRsfihRkHRPDrC81cXS+WoXVdnIYhXH+ysYQ7K9UYcNP77o4GBe3liXtHLEkIL+
UKSaPR1YbAIwAydfZ+Av0w+lUwErHsETnE/lPqkl3T1ArdqA2oyI9K05x4l0MVZT
RuSKaXYzi1ZKoGp3BCOktyJgdyWXkykAkVexfyGofCZu+tJoLAvsU8ZLYj7EgIr2
QyEa9r7Pgmixq0HQuYRSGMBxDS5LEDqe/RpnaThM6KNYT9ob+Cj7xMq916QMsGqo
GF4raTV5fY3dOzu18Tg91e83ipt4GWvpyUo0O9RE2x8DYDLtAnDQ3AZO0r4QbeYw
3j0HO2ECgYEA/30euI6gf+OyGs8AUFwL/AzP2xjO3HJ+sKoJ8QCfcQVeVE2Fkbj4
Kh7tdOIyJ0xrY+sw3O28rr6H9+5PxK8Zz3jUSG6uuXHBxYzDAoJr6HQhoJduRr0t
DRphMWPBXkIpdW9sMO7upGCfF1VTjD7Xyih+2N3FRwcsp8NAuxDeclECgYEA4jR3
BEZLdOpfJ+P2fVC0xWsdfsdsdfertDrghjkStbJd1oPUaWeXB485i2QFK9/e0fKU
uLXRo3Vs8LWB9eQplh3XqB/sSE0sRbtkv+eKdTAEtZDekCkdL2ok2aNIZbH3SF8E
cZH/23AHk8HyEpNyQgS8M/3QCRCQWMhYGVZCaa8CgYEAv3kp+O8LYk1nQag5eABE
CxYfAPjKr3Qvdn85DCGHXNDFLTEcFWYmtoqPM7YCGGmxYiT1bd3ONrgcdrdnmOQR
1+eaUN6CnAChVEh2Lf9Il+HRAeX7g5BrnxJSHQ3B8b5sC9MBpnqq5w5yrK4J+2Vt
m9hVmHo8S0sZMHGopYmy7MECgYBIzqY4JAAJg55ZEpC1yRJGLZSEe9fQgTbDlNgi
Gq96IA0ADLKDsqnz7u+QpALeGlJ3tOKViUAOoq8L0wAfiu6vuK8/F/dPVjeXwjct
ZXM1QN1jK1vXfsQ8DKgLvPiCcwOqsZqWi22UzbxCnLwzqm2uPiPtgBZDtKchTGq+
zPrXVQKBgQCx59ITBMRrAGQTl5Rcb6eM8HLRdIGsi5PM1KqA6Lxoq4bZ6yKSRGKY
Z/DIlZ5pLgSxkW8UJ5BO7TUhIMC94v9PgHMTOAdlYzfHwcWPHD625A5c6tfzBt4g
OlzxKS+AuvH0szDQ28oprkSEAbWogGcOi1mW9VuOOB4QbwAgMrVtHA==
-----END RSA PRIVATE KEY-----

密钥格式修改成功,更新到 jenkins 重试成功,当前 Jenkins 使用的 SSH Agent Plugin 插件版本位 1.17 , 说明这个版本不支持 OPENSSH 格式的密钥,本来想到 github 上去提个 bug , 发现 isssue 功能被关闭, 代码都是 7 年的代码

相关链接: