我使用的是ruby EC2 SDK,Version 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})
API抛出此错误:
*** Aws::EC2::Errors::InvalidKeyFormat Exception: Key is not in valid OpenSSH public key format
我不知道哪里出错了,也不知道如何正确地生成公钥材料。我已经尝试过对公钥字符串进行Base64编码,但没有成功。
- 编辑**
我尝试了一些新的东西。我使用EC2 Web控制台从头开始生成了一个新的密钥,然后按照Raphael在下面指出的方式生成了一个公共密钥
openssl rsa -in mykey.pem -outform PEM -pubout -out mykey.pub
密钥未加密。
无论是用Web控制台还是用代码导入公钥,我都得到了同样的错误。
- 编辑2**
我发现了这个。
当使用不同的命令生成公钥时,它的工作原理是:
ssh-keygen -y
生成的公钥看起来不同。它以
ssh-rsa AAAAB3NzaC1yc2EAAAADA....
而第一个生成的开始于
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG....
现在的问题是如何用ruby生成第一个格式,我还发现了this发布的不同格式。
4条答案
按热度按时间y3bcpkx11#
好的,我按照this post解决了这个问题。
结果证明公钥必须以不同的方式生成
idv4meu82#
文档建议密钥内容必须在Base64客户端编码,但实际情况并非如此:SSH密钥内容应按原样提供,格式为“ssh-rsa XXXXX...."。
41ik7eoe3#
Rory是对的。在NodeJS下面的代码工作。
gpnt7bae4#
我正在使用Ruby SDK V3,这是我将密钥导入AWS的工作
希望对你有帮助!