ものすごく小さなトラブルでしたが、備忘録として書き残しておきます。
起きた問題
AWS OpsWorksにデプロイ用のSSH秘密鍵が登録できない。
OpsWorksに新しいAppを作成して、Application SourceとしてプライベートGitHubリポジトリに配置したコードを使おうとした。
リポジトリURLは git@github.com:<ユーザ名>/<リポジトリ名>
な形式、もちろんプライベートリポジトリなのでssh鍵を使った認証が必須です。
そこで
$ ssh-keygen -t rsa -f deploykey
などと鍵を生成し、
- 生成された公開鍵(.pubの方)をGitHubリポジトリのデプロイ鍵として登録
- 生成された秘密鍵(.pubじゃない方)をOpsWorksに登録
していくわけだが、手順2が通らなかった。曰く、赤文字でPlease provide a valid SSH key
と。
原因と対処法
最近のSSH秘密鍵の形式が変更されたのだが、OpsWorks側がまだこれに対応していないのが原因。
-----BEGIN OPENSSH PRIVATE KEY-----
XXXXXXXXXXXXXXX.....
-----BEGIN RSA PRIVATE KEY-----
YYYYYYYYYYYYYYY.....
鍵本体の仕様は変更されていないので、秘密鍵ファイルを開いて手作業でヘッダ部分の だめでした。OPENSSH
を RSA
に置換してあげれば良い。旧形式で生成する方法は調査中ですが、一旦昔の ssh-keygen
が入っているサーバで生成した鍵を使って対策しました。
2019/03/13 追記
@kazukifujii さんのコメントを参考に過去のコマンドを実行したところ、無事に旧形式で Private Key の生成ができました。 @kazukifujii さん、ありがとうございます!
ssh-keygen -t rsa -f deploykey -m pem
これでOpsWorks側の鍵バリデーションが通るようになります。
ちなみに、GitHubのリポジトリに設定したデプロイキーと、手持ちの秘密鍵のペアが正しく動作するか検証するときに下記のコマンドを使いました。参考:git clone 時に秘密鍵を指定する
$ GIT_SSH_COMMAND="ssh -i ~/.ssh/deploykey -F /dev/null" git ls-remote git@github.com:<アカウント>/<プロジェクト> HEAD