Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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 158 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

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.