AMIから起動したEC2に別のEC2からSSH接続できない

はじめに

EC2(サーバA)→EC2(サーバB)にファイル転送をする必要があったので、SSH接続をしてみたところうまくいきませんでした。
サーバBはサーバAのAMIから起動しており、同じ鍵で入れるはず(だしPoderosa経由では接続できた)のでハマりました。

TL;DR

  • Poderosaでの接続とLinuxのsshコマンドでの接続で、使用する秘密鍵の形式が違っていた
  • 既存の秘密鍵をOpenSSHに変換したところ、うまくいった

環境

  • OS : Windows10
  • ターミナルソフト : Poderosa

前提

  • 普段はPoderosaでEC2(サーバA)に公開鍵方式でSSH接続している
  • サーバAのAMIから起動したEC2(サーバB)に、サーバAからSSH接続したい。
  • PoderosaからサーバBには、サーバAへの接続に使う秘密鍵と同じものでSSH接続ができた
  • サーバAには、サーバA、サーバBのSSH接続に使用する秘密鍵を配置している

起きたこと

Poderosa→直接サーバBにSSH接続はできたのですが、Poderosa→サーバAに接続し、そこからサーバBに接続しようとすると失敗します。

# 実行コマンドイメージ : サーバAで実行
ssh xxx@サーバBローカルIP -i ~/.ssh/private_key

具体的には、秘密鍵のパスフレーズ入力が失敗し、Permission denied(publickey)と出ます。

解決策と原因

-vオプションをつけて試してみたところ、
Bad passphrase, try again forと出て失敗していました。
(もちろんパスフレーズを正しく入力していることは確認済み)

ググると以下の記事が出てきました。
SSH – Bad passphrase, try again for が繰り返されてssh-agentに鍵登録が出来ないです。|teratail

結論として、PuTTYgenで既存の秘密鍵を変換するとうまくいきました。

手順

  • メニュー>Conversions>Import Key>秘密鍵をインポート
  • Key Passphraseでパスフレーズを設定
  • メニュー>Conversions>Export OpenSSH key
  • 保存された鍵をサーバA→サーバBへの接続に使用

原因

どうやらPoderosaで接続するときとLinuxで接続するときで、鍵の形式が違うのが原因のようでした。
Poderosa→EC2に接続するときに使う鍵を、そのままEC2→EC2の接続で使うことはできないようです。

まとめ

SSH周りのトラブルは発狂しそうになりますね…

関連記事

SSHで困った事例がたまっています。