当前位置: 首页 > 知识库问答 >
问题:

导入ec2密钥时OpenSSH密钥格式无效

汪辰阳
2023-03-14

我使用的是ruby EC2 SDK,版本2。用EC2生成的密钥的私钥材料存储在字符串中。我正在尝试使用openssl::pkey::rsa生成将密钥导入EC2所需的公钥材料

kk=OpenSSL::PKey::RSA.new my_private_key_material
pub=kk.public_key
ec2.import_key_pair({key_name: "my_key", public_key_material: pub.export})
*** Aws::EC2::Errors::InvalidKeyFormat Exception: Key is not in valid OpenSSH public key format

我尝试了一些新的东西。我使用EC2 web控制台从头开始生成了一个新密钥,然后按照Raphael在下面指出的方法生成了一个公共密钥

openssl rsa -in mykey.pem -outform PEM -pubout -out mykey.pub

密钥未加密。

在尝试通过web控制台或代码导入公钥时,我得到了同样的错误。

ssh-keygen -y
ssh-rsa AAAAB3NzaC1yc2EAAAADA....

而第一个生成的文件以

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG....

现在的问题是如何在Ruby中生成第一种格式。我也找到了这个不同格式的帖子。

共有1个答案

戴建义
2023-03-14

好的,我通过跟踪这个帖子解决了它。

结果证明,必须以不同的方式生成公钥

kk=OpenSSL::PKey::RSA.new my_private_key_material
key=kk.public_key

type = key.ssh_type
data = [ key.to_blob ].pack('m0')

openssh_format = "#{type} #{data}"

ec2.import_key_pair({key_name: "my_key", public_key_material: openssh_format})
 类似资料: