I have access to a remote server where I am only allowed to login via SSH with a key, and I can’t add an extra key by myself, as described in “No Password SSH” post. The private key (RSA) has been generated with ssh-keygen in Linux, and I can login from Linux without issue.
This morning, I wanted to do the same with Putty in Windows XP, so I just copied the private key to Windows and loaded it in Putty, but it failed:
1 |
Unable to use key file "F:\Downloads\cnxsoft\a1000\id_rsa" (OpenSSH SSH-2 private key) |
After a few minutes of research, I found my answer on UbuntuForums, and the reason it fails is because Putty does not support openssh keys, but uses its own format.
Here’s what I had to do:
- Convert OpenSSH private key to Putty private key with Putty Key Generator (puttygen)
Start puttygen, and click on Conversions->Import key, then click Browse and select the private key generated with openssh (e.g. id_rsa).
Then click on Save private key (e.g. id_rsa_putty.ppk) - Putty SSH login with private key.
Now you can start Putty, enter the machine IP address or url as usual, then go to Connection->SSH->Auth.
Click Browse, and select your private key file (e.g. id_rsa_putty.ppk), go back to Session and save the session. You should now be able to login to the server.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Thank you, clear and useful !!
Awesome, worked like a charm, this was driving me batty!
Thank You. I have been struggling to make the openssh 2 key to work with putty until I found your post.
Hello and thank you for the step by step guide. I have an issue, though, just at the beggining. When importing the key with puttygen I get an error message “Couldn’t load private key (unexpected end of file)” and cannot continue past that point. Any ideas regarding this error? Than you in advance!
Nevermind, I just resolved it. I think the problem was that the key file name was not standard (I’m not sure yet)
Nice work, helped a ton!!
It did not work for me, i did all the same steps given above to connect to my remote server.
I am getting exception as “server refused our key “. Any suggestion is welcome.
Awesome. really useful
Thanks guys. I have a id_rsa generated on linux machine and have to use it on windows machine using psftp of putty. I followed your conversion and everything is ok now. Thanks
Did the job perfectly. Thanks!!
Thank a lot for this, it helped perfectly.
Fantastic, that’s a really nasty gotcha. You’d think putty could do some validation of the key on the local machine and spit back a more useful error. Oh well, thanks again for the help!
Thanks so much, I almost flipped out
Hey i tried with ur solution now i m getting another error like server refused the key can you help me how to solve this error and connect to server?
Thank you for this information.
I spent like 2 hours trying to figure out why putty wont connect.
Thank you .. this worked..
I wish this had worked. Putty is not good software.
Hi everyone. For those getting “server refused” errors, the second step to this process, at least on Ubuntu on Digital Ocean, is that your server needs to have the PUBLIC part of the key pasted into a file called authorized_keys which is located in the ~/.ssh/ folder. The whole key needs to go on first line and only be one line long. Finally, success!
You rock! Thanks for publishing clear and easy steps to follow. This totally worked for me.
Thanks a lot!! Very helpful, I was stuck with this for days and your solution resolved my issue.
Saved me! Thanks!
Lifesaver… right here! 😉
Thanks!
Since I didn’t see any mention of it here you can also do this from the command line on a linux system if you have putty built. If you’re trying to convert an openssh key to a putty compatible key:
Will convert the file id_rsa_openssh to a putty compatible key id_rsa_putty. You’ll need to replace the file names (id_rsa_openssh and id_rsa_putty) to match the files you’re trying to convert. If id_rsa_putty exists it will be overwritten with the converted key.
@Aaron
@Aaron: Good timing on your post. I’m sure I already knew this, but I had forgotten it and your post helped me fix my problem.
This was very very helpful. Thank you sir.