gpt4 book ai didi

node.js - openssh 返回 "bad key type"以及加密生成的 key 对

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:00 25 4
gpt4 key购买 nike

我需要在 node js 上生成 rsa key 对代码以便将其与 openssh 一起使用docker 上的客户端容器。

我正在使用generateKeyPair crypto的功能生成 key 和 parse[Private]Keysshpk翻译 pem 中的按键至openssh格式。

我的功能是:

import { generateKeyPair } from 'crypto';
import sshpk from 'sshpk';

const createSShKeys = () => {
return new Promise((resolve, reject) => {
generateKeyPair('rsa', {
modulusLength: 4096,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem',
},
privateKeyEncoding: {
type: 'pkcs1',
format: 'pem',
},
}, (error, publicKey, privateKey) => {
if (error) {
reject(error);
} else {
const publicKeySShEncoded = sshpk
.parseKey(publicKey, 'pem')
.toString('ssh');

const privateKeySShEncoded = sshpk
.parsePrivateKey(privateKey, 'pem')
.toBuffer('ssh', {}) // toString('ssh') is documented, but I not find it in code.
.toString();

resolve({
publicKey: publicKeySShEncoded,
privateKey: privateKeySShEncoded,
});
}
});
});
};

我创建了一个docker secret与私钥,并在容器内使用它,但后来我得到:

Host key verification failed.

提示#1:gitlab.com 不是已知主机

经过搜索,我找到了this answer ,并且我已在 .ssh/known_hosts 内添加了主机指纹文件:

ssh-keyscan -H gitlab.com >> ~/.ssh/known_hosts

但一切都没有改变

提示#2:按键错误

为了测试 key 对,我记录了以下内容:

const {
publicKey,
privateKey,
} = await createSShKeys();

console.log('#PUBLIC KEY');
console.log(publicKey);

console.log('#PRIVATE KEY');
console.log(privateKey);

我已将私钥存储在文件中。我尝试用以下方法验证它:

$ ssh-keygen -y -t private_key
bad key type

生成的私钥如下

https://pastebin.com/2JC7kz9r

是否有人已经使用 crypto 生成了 key 和sshpk成功了吗?或者遇到类似的问题?

感谢您的帮助! :)

最佳答案

问题实际上是主机的 key ,而不是生成的 key 。

但是“干净”的方法不起作用:

ssh-keyscan -H gitlab.com >> ~/.ssh/known_hosts

唯一的工作方法是将这些行附加到 /etc/ssh/ssh_config 上:

Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null

我不知道为什么。 (如果有人有想法吗?)

但最后,按键没问题,这可能是复制/粘贴时的错误(笑)

谢谢大家!

关于node.js - openssh 返回 "bad key type"以及加密生成的 key 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58222971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com