首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python从私钥文件中检索公共SSH密钥

使用Python从私钥文件中检索公共SSH密钥
EN

Stack Overflow用户
提问于 2022-11-08 16:11:00
回答 1查看 37关注 0票数 0

我有一个私钥文件id_rsa (开头是-开始是RSA私钥-)使用工具ssh-keygen,我能够使用以下命令生成SSH公钥:ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

生成的文件将包含以下内容:

AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9j..。

我正试图在Python代码中实现同样的目标。代码将在AWS上执行,因此我希望避免调用os.system()来运行shell命令,因为我无法控制底层环境。

假设我有一个变量private_key,我如何从其中提取ssh公钥?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-08 17:04:27

OpenSSH现在有自己的私钥格式(开始OPENSSH私钥)。以前,PKCS#1或PKCS#8格式用于私钥。发布的私钥具有PKCS#1格式(PEM编码)。

密码学库支持广泛的关键格式,包括PKCS#1和OpenSSH格式。以下代码允许导入PKCS#1格式的私钥并以OpenSSH格式导出公钥:

代码语言:javascript
复制
from cryptography.hazmat.primitives import serialization

privatePkcs1Pem = b'''-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQE....QkFn5HuC2aOZjktdA==
-----END RSA PRIVATE KEY-----'''

private_key = serialization.load_pem_private_key(privatePkcs1Pem, password=None)
public_key = private_key.public_key()
public_openssh = public_key.public_bytes(encoding=serialization.Encoding.OpenSSH, format=serialization.PublicFormat.OpenSSH )

print(public_openssh.decode('utf-8')) # ssh-rsa AAAAB3NzaC1...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74363862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档