将公共密钥作为字符串嵌入Paramiko应用程序中

问题描述 投票:5回答:2

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

我尝试过此solution,但对我不起作用。。

我该如何完成?谢谢。

python windows paramiko ssh-keys public-key
2个回答
11
投票

您提到的解决方案:

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

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)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.