我试图在python中创建单个文件可执行文件,并使用paramiko为我的SSH。我需要消除外部文件,如公钥文件,并尝试使用嵌入式字符串。
我试过这个solution,但它不适合我......
我如何做到这一点?感谢。
答案 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)