作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是 Node 版本:v10.14.1,我使用以下代码生成 key 对:
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()
生成它?
最佳答案
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);
}
});
关于Node.js:如何将 RSA 公钥转换为 OpenSSH 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53897360/
我是一名优秀的程序员,十分优秀!