Posted at

OpenSSHで生成したed25519形式の秘密鍵はputtygenで読み込めない

そんな話があるか!と思いググっていると、stackoverflowに先駆者がおりました。

人生の疑問は大体stackoverflowに書いてある!


down vote

The command in the above answer is just printing public key portion in RFC4716 format.

At some point, ssh-keygen generates openssh private key which doesn't use cipher supported by puttygen.

ssh-keygen doesn't provide option to specify cipher name to encrypt the resulting openssh private key.

There is a workaround: remove the passphrase from the key before importing into puttygen.

$ cp ~/.ssh/id_ed25519 ~/.ssh/id_ed25519-for-putty

$ ssh-keygen -p -f ~/.ssh/id_ed25519-for-putty

Enter old passphrase:

Enter new passphrase (empty for no passphrase):

Enter same passphrase again:

Then, use puttygen to convert ~/.ssh/id_ed25519-for-putty into .ppk and set the passphrase from puttygen.

Don't forget to shred and remove ~/.ssh_id_ed25519-for-putty afterwards for obvious reason.


ようするに、生成したed25519形式の秘密鍵にパスワードが入っていると大人の事情で読み込めないらしいです。

なので生成した後に空パスにしてputtygenに放り込めばおkです


解決方法

1: ssh-keygenで普通にed25519形式のキーを生成します。ここでは普通にパスワードを入力して平気です。

cd ~/.ssh

ssh-keygen -t ed25519 -C "コメント(メルアドとか入れとく)"

2: 加工するのでコピーを取る

cp ~/.ssh/id_ed25519 ~/.ssh/id_ed25519-for-putty

3: 2.で作成したコピーを編集して、パスワードを空にしましょう。

ssh-keygen -p -f ~/.ssh/id_ed25519-for-putty

Enter old passphrase: <your passphrase>
Enter new passphrase (empty for no passphrase): <press Enter>
Enter same passphrase again: <press Enter>

// 後始末
sudo chown あなたのユーザ名:あなたのユーザ名 id_ed25519
sudo chmod 600 id_ed25519

5: 生成したid_ed25519-for-puttyをwindowsに移動させて、puttygenにimportします!


終わり!

参考URL: stackoverflow