Convert a PuTTY private key to openssh

Want to help support this blog? Try out Oh Dear, the best all-in-one monitoring tool for your entire website, co-founded by me (the guy that wrote this blogpost). Start with a 10-day trial, no strings attached.

We offer uptime monitoring, SSL checks, broken links checking, performance & cronjob monitoring, branded status pages & so much more. Try us out today!

Profile image of Mattias Geniar

Mattias Geniar, February 22, 2020

Follow me on Twitter as @mattiasgeniar

I recently got a PuTTY private key sent to me that I wanted to use to log into a remote server. But, I run OpenSSH, not PuTTY.

Here are the steps to convert the PuTTY private key to an OpenSSH private & public key.

Install puttygen

There’s a CLI tool to help with the conversion, it’s available on most Linux distro’s and Mac.

For Linux:

$ apt-get install putty-tools
$ yum install putty

On Mac:

$ brew install putty

On Mac, I ran into the error that PuTTY isn’t compatible with pssh, so I had to run brew unlink pssh first.

Now you have a utility puttygen available.

Converting the private key from PuTTY to OpenSSH

With your private key at hand, now run the following commands.

$ puttygen putty.ppk -O private-openssh -o ~/.ssh/id_putty
$ puttygen putty.ppk -O public-openssh  -o ~/.ssh/id_putty.pub
$ chmod 0600 ~/.ssh/id_putty
$ chmod 0666 ~/.ssh/id_putty.pub

You can put these files in your ~/.ssh folder to easily refer to them when you SSH into a machine.

$ ssh user@ip -i ~/.ssh/id_putty

With the -i flag you pass along the identity you want to use to authenticate, in this case we refer to the newly created private key.



Want to subscribe to the cron.weekly newsletter?

I write a weekly-ish newsletter on Linux, open source & webdevelopment called cron.weekly.

It features the latest news, guides & tutorials and new open source projects. You can sign up via email below.

No spam. Just some good, practical Linux & open source content.