2

I am trying to use ssh to connect to server using Python paramiko package.

When I tried to ssh into server using "pem" key then it worked but when I tried it by taking private key content in a string it shows an error.

With the following code:

    import paramiko
    import StringIO
    content="-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQE ----whatever content"
    private_key = StringIO.StringIO(content)
    k = paramiko.RSAKey.from_private_key(private_key)
    c = paramiko.SSHClient()
    c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    host="XX.XX.XX.XXX"
    c.connect( hostname = host,username="ec2-user", pkey = k )
    print "Connected to " + host`

I get the following output:

Traceback (most recent call last):
  File "one.py", line 6, in <module>
    k = paramiko.RSAKey.from_private_key(private_key)
  File "/home/ec2-user/abc/local/lib/python2.7/site-packages/paramiko/pkey.py", line 217, in from_private_key
    key = cls(file_obj=file_obj, password=password)
  File "/home/ec2-user/abc/local/lib/python2.7/site-packages/paramiko/rsakey.py", line 42, in __init__
    self._from_private_key(file_obj, password)
  File "/home/ec2-user/abc/local/lib/python2.7/site-packages/paramiko/rsakey.py", line 167, in _from_private_key
    data = self._read_private_key('RSA', file_obj, password)
  File "/home/ec2-user/abc/local/lib/python2.7/site-packages/paramiko/pkey.py", line 277, in _read_private_key
    raise SSHException('not a valid ' + tag + ' private key file')
paramiko.ssh_exception.SSHException: not a valid RSA private key file

Can anyone suggest what could be the problem?

Patrick Mevzek
  • 10,995
  • 16
  • 38
  • 54
Kriti Singh
  • 49
  • 1
  • 5

1 Answers1

3

Private key file is a multiline file.

So when using it as a string, preserve the content structure as it is to keep it valid.

content = """-----BEGIN RSA PRIVATE KEY-----
              MIIEpgSIJOBAAKCAQEAqwH5fWIbtFRankLqvtnQ6OKwmIa49i
              ..........................................
              -----END RSA PRIVATE KEY-----"""

private_key = StringIO.StringIO(content)
k = paramiko.RSAKey.from_private_key(private_key)
franklinsijo
  • 17,784
  • 4
  • 45
  • 63