2022/10/03

テクノロジー

プライベートサブネットを無理やりパブリックサブネットにしてSSH許可した備忘録

この記事の目次

    はじめに

    ※このお話はフィクションです。

    「一瞬でいいからSSHがしたいんです……」

    この1つのチャット通知から私の闘いがはじまりました。
    これはその奮闘記となります。

    現状の確認

    現状の構成は以下です。

    わかる方にはわかるかと思いますが、現状の構成ではSSH接続は叶わぬ夢です。

    踏み台サーバを構築すれば一発かとは思うのですが、こちらのシステムは非常にギリギリの予算で運用されていました。
    そのため、踏み台用EC2を作成し使用することは一時的にも難しいです。

    力戦奮闘記録

    構成

    結論からお伝えすると、力業でプライベートサブネット(protected subnet)を無理やりパブリックサブネットにしました。
    ※protected subnet
    プライベートサブネットとほぼ同義の認識で大きくはズレていないのですが、今回はNATゲートウェイを使用することでプライベートサブネットからインターネットへの通信が可能になっています。
    このように「プライベートなサブネットからのインターネットへの通信は可能、インターネット側からはプライベートなサブネットにアクセスできないようにしているサブネット」のことを指しています。

    構成図で表すと以下のような感じです。

    手順

    SSHしたい対象のEC2がいるサブネットを確認します。

    次に、サブネットのルーティングを変更します。
    サブネット>詳細>ルートテーブル>ルート>ルートを編集

    ターゲットをNATゲートウェイからインターネットゲートウェイに編集します。

    プライベートサブネット(だったもの)からインターネットへの通信が可能なルーティングになりました。

    次にEC2を見ていきます。

    ここでしまった!と思いました。
    サブネットの種類が変わればEC2もパブリックなものに変わるかなと予想していたのですが、どうやら予想は外れてしまったようでした。

    パブリックIPを持たずに生まれてきたEC2は、EC2が存在しているサブネットがパブリックになっても自然にパブリックIPが付与されるというわけではないようです。

    このままではSSH接続はできないので、無理やりパブリックIPを付与していきます。

    この際、使用したサービスはElastic IPです。

    「Elastic IPアドレスを割り当てる」>割り当て
    これでEIPを手に入れることができます。

    アクション>Elastic IPアドレスの関連付け>インスタンス>該当のインスタンスを選択
    これで手に入れたEIPをインスタンスに付与することができます。

    ここで、「あれ?EIPってお金かかるんじゃないの?」と思った方もいらっしゃるかと思います。

    ご安心ください。
    EIPが関連付けられているEC2インスタンスが起動しており、そのインスタンスにEIPが1つしかアタッチされていな場合は料金が発生しません。

    というわけで無事、(追加料金なしで)pokepokeというEC2にSSH接続が可能となりました。

    さいごに

    SSHでの作業も終わりましたので元の構成に戻してめでたしめでたしです。
    今回は複雑な構成ではなかったので元に戻す作業も無事終えることが出来ましたが、複雑な構成の場合ですと戻し忘れや設定変更による影響が怖いです。

    踏み台用EC2であれば、スペックをおさえたt3.nanoのインスタンスでも十分かと思います。
    Amazon EC2 オンデマンド料金をご確認いただければ費用としてもそこまでの額ではないことがわかると思います。

    次からは横着せずに踏み台サーバ経由でのSSH接続を試みようと思います。

    ※本記事は2022年10月時点の情報です。

    著者:マイナビエンジニアブログ編集部