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.