Embedding public key as string in Paramiko Application

scottyp picture scottyp · Dec 27, 2014 · Viewed 7.3k times · Source

I'm trying to create a single file executable in python and using paramiko for my SSH. I need to eliminate external files such as public key files and try to go for embedded strings.

I tried this solution but it's not working for me..

How do I accomplish this? Thanks.

Answer

teegaar picture teegaar · Dec 28, 2014

The solution you mentioned:

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

works fine however it may be inconvenient to store the key in base64 format.

The following code shows how to use the key stored in "plain-text" format (as key-files in ~/.ssh directory):

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