Skip to main content

SSH public key parser

Project description

This library validates OpenSSH public keys.

Currently ssh-rsa, ssh-dss (DSA) and ecdsa-ssh keys with NIST curves is supported.

import sshpubkeys
ssh = SSHKey("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAYQCxO38tKAJXIs9ivPxt7AY" \
    + "dfybgtAR1ow3Qkb9GPQ6wkFHQqcFDe6faKCxH6iDRteo4D8L8B" \
    + "xwzN42uZSB0nfmjkIxFTcEU3mFSXEbWByg78aoddMrAAjatyrh" \
    + "H1pON6P0= ojarva@ojar-laptop")
print(ssh.bits) # 768
print(ssh.hash()) # 56:84:1e:90:08:3b:60:c7:29:70:5f:5e:25:a6:3b:86


  • NotImplementedError if invalid ecdsa curve or unknown key type is encountered.

  • InvalidKeyException if any other error is encountered:
    • TooShortKeyException if key is too short (<768 bits for RSA, <1024 for DSA)

    • InvalidTypeException if key type (“ssh-rsa” in above example) does not match to what is included in base64 encoded data.

    • MalformedDataException if decoding and extracting the data fails.


See “tests/” folder for unit tests. Use

python test


python3 test

to run test suite. If you have keys that are not parsed properly, or malformed keys that raise incorrect exception, please send your public key to, and I’ll include it. Alternatively, open issue or make a pull request in github.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

sshpubkeys-1.0.1.tar.gz (3.8 kB view hashes)

Uploaded Source

sshpubkeys-1.0.1.macosx-10.10-x86_64.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distributions

sshpubkeys-1.0.1-py2.py3-none-any.whl (5.7 kB view hashes)

Uploaded Python 2 Python 3

sshpubkeys-1.0.1-py2.7.egg (6.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page