ssh2-sftp-client加载Putty私钥报错:不支持密钥格式求解
问题原因
ssh2-sftp-client底层依赖的ssh2库只认OpenSSH格式的私钥,你现在用的是Putty独有的PPK格式,直接读取PPK文件传入后,库无法解析该格式,导致连接失败。
解决方法
方法1:用Puttygen转换为OpenSSH格式
- 打开Puttygen,点击「Load」加载你的
PrivateKey.ppk文件 - 加载完成后,点击顶部菜单栏「Conversions」→「Export OpenSSH key」
- 保存导出的文件(比如命名为
id_rsa),如果原PPK无加密,导出时不要设置密码 - 修改代码中的私钥路径:
await sftp.connect({ host, port, username, privateKey: fs.readFileSync('/path/to/id_rsa') })
方法2:代码中实时转换PPK格式
不想手动转换文件的话,可借助ppk-converter包在代码内完成格式转换:
- 安装依赖:
npm install ppk-converter
- 修改连接代码:
const ppkConverter = require('ppk-converter'); const ppkContent = fs.readFileSync('/path/to/PrivateKey.ppk', 'utf8'); const openSshKey = ppkConverter.ppkToOpenSsh(ppkContent); await sftp.connect({ host, port, username, privateKey: openSshKey })
内容的提问来源于stack exchange,提问作者shAkur
相关产品推荐
相关产品推荐

