gpt4 book ai didi

python - 如何使用 Python 生成 SSH key 对

转载 作者:IT老高 更新时间:2023-10-28 21:59:06 32 4
gpt4 key购买 nike

我正在尝试编写一个脚本来为我生成 SSH 身份 key 对。

from M2Crypto import RSA
key = RSA.gen_key(1024, 65337)
key.save_key("/tmp/my.key", cipher=None)

文件 /tmp/my.key 现在看起来很棒。

通过运行 ssh-keygen -y -f/tmp/my.key >/tmp/my.key.pub 我可以提取公钥。

我的问题是如何从 python 中提取公钥?使用 key.save_pub_key("/tmp/my.key.pub") 可以保存如下内容:

-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADASDASDASDASDBarYRsmMazM1hd7a+u3QeMP
...
FZQ7Ic+BmmeWHvvVP4Yjyu1t6vAut7mKkaDeKbT3yiGVUgAEUaWMXqECAwEAAQ==
-----END PUBLIC KEY-----

当我在寻找类似的东西时:

ssh-rsa AAAABCASDDBM$%3WEAv/3%$F ..... OSDFKJSL43$%^DFg==

最佳答案

使用密码学! pycrypto 不再处于积极开发中,如果可能,您应该使用密码学。自 6 月起,也可以生成 SSH 公钥:

from cryptography.hazmat.primitives import serialization as crypto_serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.backends import default_backend as crypto_default_backend

key = rsa.generate_private_key(
    backend=crypto_default_backend(),
    public_exponent=65537,
    key_size=2048
)

private_key = key.private_bytes(
    crypto_serialization.Encoding.PEM,
    crypto_serialization.PrivateFormat.PKCS8,
    crypto_serialization.NoEncryption()
)

public_key = key.public_key().public_bytes(
    crypto_serialization.Encoding.OpenSSH,
    crypto_serialization.PublicFormat.OpenSSH
)

注意:您至少需要 1.4.0 版本。

注意:如果您的 SSH 客户端不理解这种私钥格式,replace PKCS8TraditionalOpenSSL.

关于python - 如何使用 Python 生成 SSH key 对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2466401/

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