在Paramiko Application中将公钥作为字符串嵌入

时间:2014-12-27 17:42:20

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

我试图在python中创建单个文件可执行文件,并使用paramiko为我的SSH。我需要消除外部文件,如公钥文件,并尝试使用嵌入式字符串。

我试过这个solution,但它不适合我......

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

2 个答案:

答案 0 :(得分:7)

您提到的解决方案:

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()

答案 1 :(得分:0)

要从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)