Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Paramiko regards valid RSA private keys as invalid #340

@vitalyisaev2

Description

@vitalyisaev2

OS: RHEL 6.4, product version: python-paramiko-1.7.5-2.1.el6.noarch

I did not manage to pass to paramiko RSA private key issued by oVirt manager CA (also known as Red Hat Enterprise Virtualization Manager).

[root@vitaly registration]# ssh rhevaio
root@rhevaio's password: 
Last login: Thu May 29 15:03:33 2014 from 10.0.55.84
[root@rhevaio ~]# scp /etc/pki/ovirt-engine/keys/engine_id_rsa [email protected]:/tmp/ololo/engine_id_rsa_RHEVAIO
[email protected]'s password: 
engine_id_rsa                                                                                                                                                                100% 1708     1.7KB/s   00:00    
In [1]: import paramiko

In [2]: pk = paramiko.RSAKey.from_private_key_file("/tmp/ololo/engine_id_rsa_RHEVAIO")
---------------------------------------------------------------------------
SSHException                              Traceback (most recent call last)

/home/vitaly/progs/registration/<ipython console> in <module>()

/usr/lib/python2.6/site-packages/paramiko/pkey.pyc in from_private_key_file(cls, filename, password)
    195         @raise SSHException: if the key file is invalid
    196         """
--> 197         key = cls(filename=filename, password=password)
    198         return key
    199     from_private_key_file = classmethod(from_private_key_file)

/usr/lib/python2.6/site-packages/paramiko/rsakey.pyc in __init__(self, msg, data, filename, password, vals, file_obj)
     49             return
     50         if filename is not None:
---> 51             self._from_private_key_file(filename, password)
     52             return
     53         if (msg is None) and (data is not None):

/usr/lib/python2.6/site-packages/paramiko/rsakey.pyc in _from_private_key_file(self, filename, password)
    162 
    163     def _from_private_key_file(self, filename, password):
--> 164         data = self._read_private_key_file('RSA', filename, password)
    165         self._decode_key(data)
    166 

/usr/lib/python2.6/site-packages/paramiko/pkey.pyc in _read_private_key_file(self, tag, filename, password)
    277         """
    278         f = open(filename, 'r')
--> 279         data = self._read_private_key(tag, f, password)
    280         f.close()
    281         return data

/usr/lib/python2.6/site-packages/paramiko/pkey.pyc in _read_private_key(self, tag, f, password)
    287             start += 1
    288         if start >= len(lines):
--> 289             raise SSHException('not a valid ' + tag + ' private key file')
    290         # parse any headers first

    291         headers = {}

SSHException: not a valid RSA private key file

However, I can use this key to start trivial ssh session with oVirt server. It's absolutely OK:

ssh -i /tmp/ololo/engine_id_rsa_RHEVAIO root@<host>

See below the body of the key (I've changed some random bytes in signature due to security reasons). Have no idea why doesn't it match Paramiko's standards :

-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCUGqhnDEccgzzl
7ZG3yOg6ohSm+Eks6YbZGYLZ79xjbvOff9OHCklMPrYWYlCxscaBj3OT2mG2pY2v
ibkBiy3Y5N97LyyhBgk1vVFBww8Bg/kcnwaJ/VmzU6ZqG4b1f+iTo1ZadxYGLML5
IzPQwrj2LHaWi5LfKnRIKy8Vw2GevfNDB3w5jkKxJ/pq+cocUpOIfdbKCfVaE90b
1PMN9JOtKgqomu1eWpn9dbsKQNDogKtLTPTg0e/i7ytRQErP8krO8FV/LIAp/Jmo
hEsDPNuduofTl5vbHf3TgRqAq60fVNzq82XhQkYWnEu5n1sIwaxll4/k8rcr9BPa
eC87SyQZAgMBAAECggEAVSrLQo7t6biScYpfLHetC+Key7Glqt0TvY6ND7R+YPOx
xzvjsRk6M00wusiIrNaVV3Xdud1wKW8kfhhNulSF5d8foJ/tIx/sdenLa2y3GWEC
BPJx+TImvhfRb90qi8ylOxlHlDg9AwoEiO40Ys1HPdEt1L6olAq+2a1zoyk63uRu
SjIGYOgW4UpOLw8h04PZKTzpQsl0rYcFeVhbiU3uNvbmywxMxQOUQeADD7lY4K3v
boNFFDsxEaAIo5vVkYSSuS383XhJhiHRe6RfaKwyR4Wwn+KtFa03gT12RWBhxWtz
B9+xYTKxc1w1qHBo3Ki8gLbQZQDxOd9chjUpyDX1AQKBgQDOLBnez+1TOWyFmbKh
jdfngGfgENzoMWsIz0SrXoiKp7e5YuhP+vRRNUvbM0fZzSfhxg4LmH05RpvpyCSH
0tAgsHDae5LTGbfGExPzrnYUe7x5Jololavsa4Lp8IgUWjUpyzWE4fBhm9un9mh4
v6LgMj80dnI/LJJ3P8uAdNuJeQKBgQC35eASrVRJeDoT2syfvsxs603irE45aD34
y1Tz25CxQlRepAyJ/iMTFqw/twsqdc0Jze/9EsZSHM2shkXLVbJqJlGFKorXMkct
7nrQthX+6Qq2GMa8tJ5ejkAK2ACbJ9eM5hReq+rgGQifcBxj1loceYht0+i+TCZC
qetw/7pnoQKBgQC4RHZCzDfi4Dn8FmivN6U2RW+RtcCazkBJuWY4e98xfcEZMitM
AJGIW0gW+/hF07THd0pqVrnlDRSgl77+ng5iiQ/0VenePugfYkG807q5h/XlmUqg
FiI4xcZV7CLTfeRyHCsTPxSnSLPDpNmuwiiClKYk75AgometqRjrEIZ+kQKBgQCs
m/3oSfzVQR3ySOrL/kDO80YVvvlldOzGO8QvaCW127ZpZr3GQF4Xqq5e16aJYizk
SQI7noW7yQFcMGQOaQ+gBvt5bOcI+k5JVJC+mkqnC4JcTYEs2rPTuN1v0DMxbwIp
ZEQ2YFODqLupO4fKRgYquABQZhkNlVhMNkWhuMb0QQKBgQCpVfbzX2VxkBIarkFD
m10iKstxnczWfob2rP4Kmq+vOW9Q9awZBy2n4HkVrAKAPJssLuTbZOerSDfc0/PP
NzkL5G8PKkpZuH/d9YzEksNRht8HGwIHfqM/CjZSpYttOTYGIEIur6t/V8Xn43Ru
1Si5Uh2U6IcsU0DBgU54EfhXjw==
-----END PRIVATE KEY-----

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions