17

在我的 Mac book pro with OS Majave 中,我使用 SSH-KEYGEN 为 node.js 模块 SSH2 生成一个新的 SSH 密钥。但是,我收到错误消息:Cannot parse privateKey: Unsupported key format

我用 ssh 命令验证了密钥,它工作正常。但不适用于 node.js 模块 SSH2。

在私钥文件中,头部是 .-----BEGIN OPENSSH PRIVATE KEY-----而结尾是-----END OPENSSH PRIVATE KEY-----.

我检查了模块 ssh2-streams keyParser.js。正则表达式模式RE_HEADER_OPENSSH_PRIV不包括我的标题。任何人都可以帮忙吗?

4

3 回答 3

20

有同样的问题,在这里找到了解决方案。

创建密钥时基本上使用 PEM 选项:

ssh-keygen -m PEM -t rsa 
于 2019-01-01T11:41:44.503 回答
10

您还可以转换现有密钥,而不是创建一个新密钥(确保在运行以下命令之前备份它,因为它会覆盖您原来的密钥):

ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

(来自https://serverfault.com/a/950686的原始答案)

于 2020-01-06T11:27:53.727 回答
-1

将私钥内容放入配置文件时,我遇到了同样的问题:

module.exports = {
    sftp: {
        privateKey: `MY PRIVATE KEY
        CONTENT WAS HERE!!!`
    }
}

解决方案:fs.readFileSync改用:

const fs = require('fs')

module.exports = {
    sftp: {
        privateKey: fs.readFileSync("Path to my private key"),
    }
}
于 2019-09-03T04:21:14.027 回答