Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I know that is possible to convert .ppk under puttygen in Windows, but how to do that on Linux? Is this possible ?

share|improve this question
up vote 162 down vote accepted

Do it with Putty.

  • Linux: with your package manager, install PuTTY (or the more minimal PuTTY-tools):

    • Ubuntu sudo apt-get install putty-tools
    • Debian-like apt-get install putty-tools
    • RPM based yum install putty
    • Gentoo emerge putty
    • etc.
  • OS X: Install Homebrew, then run brew install putty

Place your keys in some directory, e.g. your home folder. Now convert the PPK keys to SSH keypairs:cache search

To generate the private key:

cd ~
puttygen id_dsa.ppk -O private-openssh -o id_dsa

and to generate the public key:

puttygen id_dsa.ppk -O public-openssh -o

Move these keys to ~/.ssh and make sure the permissions are set to private for your private key:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/

If you have already tried to perform a 'git clone' operation you might need to do this also

chmod 666 ~/.ssh/known_hosts
share|improve this answer
thanks @Stanley Williams this save lot of time for me – Poonam Bhatt Aug 7 '14 at 10:41
hi i already have a .pub then it is need to create public key again – Amit Bera Aug 20 '14 at 12:19
If you came here looking for how to do it in windows, run "puttygen yourkey.ppk", and then under the Conversions menu choose "Export OpenSSH key" to get the private key. – Ryan Shillington Sep 22 '14 at 16:46
the solution from @jous is much nicer since you don't need the private key to convert a public key + you don't need to install putty – Tobi Aug 19 '15 at 12:55
I had to add this key to my ./ssh/config file Host Hostname IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes – vladkras Jan 12 at 16:33
ssh-keygen -i -f >
  • -i flag is import from other than openssh format
  • -f flag means read from input file

Source: a blogpost at

share|improve this answer
+1 — no need for any additional software – mogsie Nov 27 '12 at 9:52
.ppk files are the full key pairs, I don't think the command above or the blog post apply to that. – Peter Becker Feb 7 '13 at 0:27
I think I meant that it works if you use puttygen's "Save public key" button. ssh-keygen do not understand true .ppk files because they lack those '---- BEGIN SSH2 PUBLIC KEY ----' markers. You can find the public key in the .ppk file between lines "Public-Lines:.." and "Private-Lines:.." though. – jous Jan 7 '14 at 14:35
This worked for me with a public-key file - puttygen seems to require a private key. it's seems that all it did was rearrange the base-64 part into a single line – Jasen Mar 12 '15 at 3:10
This does not seem to cover private keys, which is why I would want to do the conversion, I already have a public key saved somewhere... – Gert van den Berg Feb 6 at 9:47

I prepared a Docker container to make life simpler:

docker run --rm \
           --volume=/path/to/file.ppk:/tmp/id_dsa.ppk \
           --volume=/path/to/output:/tmp/out/ \


  • /path/to/file.ppk - local path to your ppk file
  • /path/to/output - local path to where the private and public key should be placed
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .