jenkins 通过SSH发布无效私钥

mrfwxfqh  于 2023-03-17  发布在  Jenkins
关注(0)|答案(2)|浏览(320)

我在Jenkins中使用Publish over SSH连接到远程服务器。我已经有了一个私钥(OpenSSH格式,以-----BEGIN OPENSSH PRIVATE KEY-----开头),它在jenkins用户下的shell中可以完美地工作,但是当我从Web界面使用它时,它会抛出jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@4bba7224]
同时,我在Jenkins机器上生成了另一个密钥(Debian GNU/Linux 9 in Docker),并将id_rsa.pub复制到远程机器上。这个密钥是不同的,以-----BEGIN RSA PRIVATE KEY-----开头,这个密钥错误是Message [Auth fail],所以它理解这个密钥。

vsdwdz23

vsdwdz231#

我刚刚遇到了同样的问题。插件被较新的OpenSSH格式弄糊涂了(我也有一个以-----BEGIN OPENSSH PRIVATE KEY-----开头的私钥)。
我保存了密钥并将其加载到PuTTyGen中,然后选择Conversions-〉Export OpenSSH Key(注意这里有一个“Export OpenSSH Key(force new file format)”,这是我们不想要的,显然这是在Windows上;我不知道在其他操作系统上会有什么等价物。
我新导出的密钥以-----BEGIN RSA PRIVATE KEY-----开头,插件在此之后接受了它。

dfuffjeb

dfuffjeb2#

使用此命令生成新的keypem

ssh-keygen -m PEM

键盘从

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

Jenkins中的sshCommand将接受此密钥

withCredentials([sshUserPrivateKey(
    credentialsId: 'server', 
    usernameVariable: 'USER', 
    keyFileVariable: 'KEY_FILE'),
    string(credentialsId: 'server-ip', variable: 'EC2_IP')
]) {
    def remote = [:]
    remote.name = USER
    remote.host = EC2_IP
    remote.user = USER
    remote.identityFile = KEY_FILE
    remote.allowAnyHosts = true
    sshCommand remote: remote, command: "pwd"
}

相关问题