我正在尝试通过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不能正常工作,因此我不确定
感谢您的帮助
答案 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。