【问题标题】:Embedding key as string in Paramiko application在 Paramiko 应用程序中将密钥作为字符串嵌入
【发布时间】:2015-02-24 12:20:54
【问题描述】:

我正在尝试在 Python 中创建一个可执行文件并将 Paramiko 用于我的 SSH。我需要消除诸如私钥文件之类的外部文件并尝试使用嵌入的字符串。

我尝试了这个解决方案,但它不适合我:
Paramiko: Creating a PKey from a public key string

我该如何做到这一点?谢谢。

【问题讨论】:

    标签: python windows paramiko ssh-keys public-key


    【解决方案1】:

    你提到的解决方案:

    key = paramiko.RSAKey(data=base64.b64decode('AAblablabla...'))
    

    工作正常,但是以 base64 格式存储密钥可能不方便。

    以下代码显示了如何使用以“纯文本”格式存储的密钥(作为~/.ssh 目录中的密钥文件):

    import paramiko
    import StringIO
    
    my_key = """\
    -----BEGIN RSA PRIVATE KEY-----
    <your key here>
    -----END RSA PRIVATE KEY-----"""
    
    pkey = paramiko.RSAKey.from_private_key(StringIO.StringIO(my_key))
    
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname='host', username='user', pkey=pkey)
    
    ...
    
    ssh.close()
    

    在 Python 3 中:

    import io
    # ...
    pkey = paramiko.RSAKey.from_private_key(io.StringIO(my_key))
    

    StringIO in Python3

    【讨论】:

    • 完美运行!谢谢 teegaar :) 顺便说一句,你认为这种私钥嵌入安全吗?或者您是否有其他适用于 paramiko 的建议(例如使用公钥)?干杯。
    • scottyp,我认为将密钥存储在可执行文件中并不安全。您可以采取措施让密钥更难泄露,但无论如何它不会完全安全。
    【解决方案2】:

    要从 ssh 客户端上的字符串添加公钥,您必须设置关键字 arg look_for_keys=False,然后使用 MissingHostKeyPolicy 类 missing_host_key() 方法从字符串中添加密钥。

    my_pub_key = "xx.xx.xx.xx ecdsa-sha2-nistp256 mlzdHAyNT....."
    my_host = my_pub_key.split(' ')[0]
    password = 'myFavortitePassword'
    username = 'myUsername'
    
    ssh_client=paramiko.SSHClient()
    
    host_key_policy = paramiko.MissingHostKeyPolicy()
    host_key_policy.missing_host_key(ssh_client, my_host, my_pub_key)
    
    ssh_client.connect(hostname= my_host
                                ,username=username
                                ,password=password
                                ,port=22
                                ,look_for_keys=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 2017-10-13
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多