Node.js: 如何将 RSA public 密钥转换为 OpenSSH 格式?
Node.js: How to convert RSA public key to OpenSSH format?
我使用的是节点版本:v10.14.1,我使用以下代码生成密钥对:
generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: ''
}
}, (err, publicKey, privateKey) => {
// Do stuff
});
这将创建一个 public 格式的密钥:
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
遗憾的是,有时需要不同的格式。在我的例子中,将 public 密钥上传到 AWS 需要 OpenSSH 格式,我认为它是这样的:
ssh-rsa
...
如何将 RSA public 密钥格式转换为 OpenSSH 格式或直接使用 generateKeyPair()
生成?
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);
}
});
我使用的是节点版本:v10.14.1,我使用以下代码生成密钥对:
generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: ''
}
}, (err, publicKey, privateKey) => {
// Do stuff
});
这将创建一个 public 格式的密钥:
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
遗憾的是,有时需要不同的格式。在我的例子中,将 public 密钥上传到 AWS 需要 OpenSSH 格式,我认为它是这样的:
ssh-rsa
...
如何将 RSA public 密钥格式转换为 OpenSSH 格式或直接使用 generateKeyPair()
生成?
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);
}
});