あるAWSアカウントでキーペアを自動生成した。公開鍵は自動的にAWSのキーペアサービス上に格納され、秘密鍵がローカルにダウンロードできる形になる。
その後、別のAWSアカウントで同じ秘密鍵を利用したいとなった。公開鍵はキーペア作成時にダウンロードされず手元にないので、秘密鍵から公開鍵を作成する。
秘密鍵からの公開鍵作成は以前何度かしたことがある気がしていて、opensslコマンドかputtygenだなって思ってた(これは間違い)。
で、秘密鍵をputtygenに食わせて公開鍵を作成。AWSの新アカウントのキーペアでインポートOK。EC2インスタンスを新規作成してそのキーペアを指定して起動。で普通に秘密鍵でSSHしようとしたら、ログインが弾かれる(泣)
puttygenで作る鍵ってちょっと特殊なイメージがあって(WinSCPとかで使うとかなんとか)、puttygenじゃだめなのかな?って思って、適当なLinuxサーバでopensslで秘密鍵を食わして公開鍵を作成。それをキーペアにインポートしようとすると、そもそもフォーマットが違うって蹴られて登録できない。あれーー??? この辺で、鍵長の制限あったっけ、パスフレーズ有無とかの影響受けるんだっけ、とか関係ないところを迷走して、ググってみるとあっさりクラメソさんが教えてくれた..
https://dev.classmethod.jp/articles/aws-import-key-pair/
記事のとおりopensshコマンドに秘密鍵を食わして公開鍵を作成して、それをキーペアにインポートしてあげて、EC2インスタンスを新規作成してキーペアを指定し直してあげると、普通に同じ秘密鍵でSSHできた
調べてみると、openssl/opensshの過去/現在で扱うフォーマットの違いは色々でてくる..