尝试替换调用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;
}
这会生成无法导入PuTTYgen
的密钥。
如果我们将cipher
更改为aes128
,可以将它们 导入,但是我们的安全策略要求> 128。
我无法找到crypto
可以支持和/或PuTTY
可以支持的列表...