通过SSH发布无效的私钥

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

6

我刚碰到了同样的问题。插件被新版OpenSSH格式所困惑(我的私钥也以 -----BEGIN OPENSSH PRIVATE KEY-----开头)。

我将该密钥保存并在PuTTyGen中加载,然后选择Convertions->导出OpenSSH密钥(请注意,有一个"Export OpenSSH Key (force new file format)"选项,我们不需要选择它。这显然是在Windows上进行的操作;我不确定其他操作系统的等效选项。

我的新导出的密钥以-----BEGIN RSA PRIVATE KEY-----开头,此后插件接受了它。


1
您可以使用此命令生成新的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"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接