BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS, SSH】 第1章【悲報】プライベートサブネットのインスタンスってクライアントPCからSSH接続できなくない...??

はじめに

こんにちは!
株式会社BFT名古屋支店・新卒の「なる」と「もな」です。

私たちはシステムエンジニア歴4か月の新参者、、試練いっぱいの毎日です。
未知の単語にもまれ、エラーの度に立ち止まり、キーボードの「Q」キーを失い、、

それでも3か月の新卒研修でエンジニアの知識を多く身につけることができました。

今回、そんな新卒研修の中で構築したブログシステムとストリーミングシステムを、AWS上で再現してみました!
その間で学んだことを皆さんに共有させてください!

さあ、構築スタート!

最初に考えたシステムの構成図はこんな感じです。

EC2を3台たて、それぞれApache, Tomcat, MariaDBをインストールし、連携させていきます。 また、セキュリティを強化するためにWEBサーバはパブリックサブネット、AP,DBサーバはプライベートサブネット内に作成しました。

この構成図を作成した時は、新卒研修で学んだ通り「WEBサーバ、APサーバ、そしてDBサーバにそれぞれ作業用PCでSSH接続して~」なんて呑気に考えていました。

ですが、、

「ん?TeraTermつながらなくないか?」

WEBサーバはパブリックサブネットに属しているため、パブリックIPアドレスを使って問題なくTeraTermSSH接続できました。

しかし、プライベートサブネットに属しているAPサーバとDBサーバは、プライベートIPアドレスしか持っていなかったのでTeraTermSSH接続できないんですね、、

「え、どうするん」

早速暗雲立ち込めるオフィス、、見つめ合う二人
こんな序盤でインスタンス操作不可になるとは、、
でもシステムを構築する上でSSH接続は欠かせない、、!

解決策、発見!

そんな私たちが見つけた手段、それは

「踏み台サーバ」です!

「踏み台サーバ」を用いたシステム構築、今回ならば以下のようになります。
※今回はコスト面と検証用であることを考慮し、Webサーバに踏み台の機能を持たせる構成になっています。

手順としては

  1. AP,DBサーバのセキュリティグループのインバウンドルールに、WEBサーバ(プライベートIPアドレス)からのSSH接続を許可(22番ポートを開放)を追加
  2. WEBサーバにTeraTermSSH接続
  3. 「ファイル」-「SSH SCP」から、EC2インスタンス作成時にダウンロードしたAP,DBサーバの秘密鍵を/home/ec2-user/.ssh/配下に配置
  4. コンソールに以下のコマンドを入力し、Enterキーを押下
$ ssh -i /home/ec2-user/.ssh/(秘密鍵の名称).pem ec2-user@XXX.XXX.XXX.XXX 

これだけです。
これだけでWEBサーバを介してAP,DBサーバにSSH接続することができちゃうのです。

よし、これで安心! さあDBサーバにSSH接続してMariaDBインストールするぞー!

...次回「第2章【悲報】DBサーバ、インターネットにつながってないからyumコマンド使えないじゃん、、」

bftnagoya.hateblo.jp