我有一个私钥文件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公钥?
发布于 2022-11-08 17:04:27
OpenSSH现在有自己的私钥格式(开始OPENSSH私钥)。以前,PKCS#1或PKCS#8格式用于私钥。发布的私钥具有PKCS#1格式(PEM编码)。
密码学库支持广泛的关键格式,包括PKCS#1和OpenSSH格式。以下代码允许导入PKCS#1格式的私钥并以OpenSSH格式导出公钥:
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...https://stackoverflow.com/questions/74363862
复制相似问题