如何使用可以导入PuTTY中的NodeJS生成SSH密钥?

时间:2019-07-17 21:52:51

标签: node.js ssh cryptography putty

尝试替换调用ssh-keygen并生成新SSH密钥的旧应用程序。 我们需要同时支持OpenSSH(Mac OS X和Ubuntu 14+客户端)和PuTTY(Windows客户端)。

借助NodeJS 10.x中crypto模块的可用性,我编写了以下小代码:

import crypto = require('crypto');

const generateKeyPairAsync = util.promisify(crypto.generateKeyPair);

export async function generateSshKeys(passphrase: string) {
    const keys = await generateKeyPairAsync('rsa', {
        modulusLength: 2048,
        privateKeyEncoding: {
            cipher: 'aes256',
            format: 'pem',
            passphrase,
            type: 'pkcs1',
        },
        publicKeyEncoding: {
            format: 'pem',
            type: 'pkcs1',
        },
    });
    return keys;
}

Try it in Runkit

这会生成无法导入PuTTYgen的密钥。

如果我们将cipher更改为aes128,可以将它们 导入,但是我们的安全策略要求> 128。

我无法找到crypto可以支持和/或PuTTY可以支持的列表...

0 个答案:

没有答案