我的节点版本为:v10.14.1,并使用以下代码生成keyPair:
generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: ''
}
}, (err, publicKey, privateKey) => {
// Do stuff
});
这将创建以下格式的公钥:
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
不幸的是,有时需要不同的格式。就我而言,要将公钥上传到AWS,需要OpenSSH格式,我相信是这样的:
ssh-rsa
...
如何将RSA公钥格式转换为OpenSSH格式或直接使用generateKeyPair()
生成它?
答案 0 :(得分:1)
node-sshpk软件包可能会帮助您: https://github.com/joyent/node-sshpk
您可以使用pubKey.toBuffer()
,也可以使用pubKey.toBuffer('ssh')
。或者,如果需要将pubKey.toString('ssh')
作为字符串。
在您的示例中,代码应如下所示:
const { generateKeyPair } = require('crypto');
const sshpk = require('sshpk');
generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
}
}, (err, publicKey, privateKey) => {
if(err){
// handle Error
}
else{
const pemKey = sshpk.parseKey(publicKey, 'pem');
const sshRsa = pemKey.toString('ssh');
console.log(ssh_rsa_2);
}
});