[小ネタ] キーペアの秘密鍵が新OpenSSH形式であるためにWindows EC2インスタンスのログインパスワード復号に失敗するときの対処法

SSH鍵の形式に対する理解が乏しく、ちょっとしたところで右往左往してしまった記録です。
2020.05.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

背景

私は普段、EC2用のキーペアとして ssh-keygen コマンドで生成したキーペアをインポートして使っています。

ある日検証用にWindowsサーバを建てて初回ログイン用の管理者パスワードを取得しようとしたのですが、
次のようなエラーメッセージがでて怒られてしまいました。

プライベートキーの先頭は「-----BEGIN RSA PRIVATE KEY-----」、末尾は「-----END RSA PRIVATE KEY-----」にする必要があります

原因

確かに対象の秘密鍵のヘッダ/フッタは下記のようになっています。

-----BEGIN OPENSSH PRIVATE KEY-----
hogehoge
-----END OPENSSH PRIVATE KEY-----

Linuxインスタンスの場合は支障なくSSHログインできていたため特に意識していませんでしたが、
私がいつも使っていた秘密鍵はOpenSSHの新形式のものになっていました。

執筆時点では、Windows管理者パスワードの取得はこの形式に対応していないようです。

OhenSSHの秘密鍵の形式変更についてはこちらの記事で詳しく説明されています。
【OpenSSH 7.8】秘密鍵を生成する形式が変更になった件について | Developers.IO

対策

下記コマンドで、手元にある新形式の秘密鍵をPEM形式に変換することができます。
(ファイルが上書きされるのでバックアップを取っておいてください)

$ ssh-keygen -p -f <新形式秘密鍵ファイル名> -m pem

変換後のファイルでは、ヘッダ/フッタが従来のものになっていることが確認できます。

-----BEGIN RSA PRIVATE KEY-----
fugafuga
-----END RSA PRIVATE KEY-----

この変換後の秘密鍵を使って、無事にパスワードの復号ができました。
あわやキーペアを変えてインスタンス立て直しか…?と思いましたが、事なきを得られて良かったです!