Why does my SSH passphrase work with `plink` and not `ssh`?

I've configured my router to accept a public key SSH session with a passphrase. They key pair was generated using the PuTTY tools on windows.

I can open the session from both Windows and Linux using the Putty tools, but I can't do so with ssh on Linux.

When prompted by ssh for the keyfile's passphrase, it fails. Ex:

~$ ssh [email protected] -p 123 -i ./key-ddwrt.ppk
DD-WRT v24-sp2 micro (c) 2010 NewMedia-NET GmbH
Release: 06/09/10 (SVN revision: 14583)
Enter passphrase for key './key-ddwrt.ppk':  <*******>
Enter passphrase for key './key-ddwrt.ppk':  <*******>
Enter passphrase for key './key-ddwrt.ppk':  <*******>

But using plink works:

~$ plink -P 48884 -ssh -l root -i ./key-ddwrt.ppk my.domain.com
Using username "root".
DD-WRT v24-sp2 micro (c) 2010 NewMedia-NET GmbH
Release: 06/09/10 (SVN revision: 14583)
Passphrase for key "Hint phrase to jog my memory":  <*******>

Enter 'help' for a list of built-in commands.

root@DD-WRT:~#

Why?


OpenSSH and the Putty derived tools use a different format for the keys. If you open up Puttygen you will be able to export a key that is openssh compatible for authentication.


ppk is a putty-proprietary way of storing the key. You need to export it as an pem for openssh to make use of it.