通过SSH复制文件失败“错误:无法解析privateKey:不支持的密钥格式。”

时间:2019-09-26 18:00:17

标签: azure-devops azure-pipelines

我正在尝试通过SSH复制文件,我使用相同的SSH服务连接,并且与其他SSH任务都很好,但是复制文件似乎遇到了麻烦,这是我监视用户登录时的外观

 sshd[32240]: Accepted publickey for azurePPL1 from 13.69.175.211 port 1984 ssh2: ECDSA SHA256:0...

这似乎很好,但是不是吗?

这是Azure管道引发的错误

Error: Failed to connect to remote machine. Verify the SSH service connection details. Error: Cannot parse privateKey: Unsupported key format.

现在我会怀疑我的SSH服务连接配置,但是由于其他ssh不能正常工作,因此我不确定

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

  

使用相同的SSH服务连接,与其他服务器连接就可以了   SSH任务,但是复制文件似乎遇到了麻烦

由于Copy Files over SSH失败后,使用相同的SSH服务连接就可以完成其他SSH任务,这意味着SSH密钥对和连接没有错误。实际上,该问题与Copy Files over SSH任务中使用的解析器有关。

请参阅有关复制文件任务的脚本的功能,该脚本在github中为开源:function run in CopyFileOverSSH.ts,以及类SshHelper的定义:sshhelper.ts。实际上,Copy Files over SSH任务使用Ssh2 npm package进行SSH连接并验证您面临的错误消息是否来自那里。对于复制文件任务本身,它不执行任何键解析。

关于密钥解析,请参见以下源函数:keyParser.js。找到第1447行,您将看到它是在Azure Devops任务中收到的错误消息。

据我所知,从任务v0.148开始使用ssh2库v0.8,但是现在ssh2库已经updated into v0.8.5

因此,要解决此问题,请使用命令ssh-keygen -t rsa -m PEM重新生成密钥对,以强制ssh-keygen导出为PEM格式。因此,密钥可以在复制文件任务中工作。

答案 1 :(得分:1)

现在很明显,Azure任务正在使用旧版本的ssh2 其中不支持Ed25519密钥,这会导致此问题,因此请立即使用RSA。