2019年3月27日水曜日

踏み台サーバー(EC2)経由でSQLServer(RDS)にSSH接続する方法(ポートフォワーディング)・Windows編


オフィス狛 技術部のHammarです。

最近はAWSで環境を作って開発する機会が多いですが、ここでセキュリティ的な部分や運用的な観点としてよく踏み台サーバー経由で目的のサーバーに接続するということがあると思います。
今回はその「踏み台サーバー(EC2)経由でSQLServer(RDS)に接続する」という目的で、接続したSQLServerをSQL Server Management Studio (SSMS) で操作したいと思います。

■利用環境

Windows(ローカルPC)
AWS ES2(踏み台)
AWS RDS(SQL Server)

■利用ツール

SQL Server Management Studio
teraterm

今回の目的を達成するには、「SSHポートフォワーディング」というテクニックを利用します。
ポートフォワーディングとは、SSHによって確立した通信経路を利用して、クライアントのポートを、クライアントが直接アクセスできないサーバのポートに転送してくれる仕組みを指します。

これを利用して今回の手順は簡単に書くと下記のようになります。
   ①踏み台サーバーにSSH接続
   ②踏み台サーバーからSQL Serverにポート転送(ポートフォワーディング)
   ③ポートフォワーディングした状態でSQLServerにログインしDB操作


では上記手順を踏まえて、具体的な手順を書いていきます。

1.teratermでポートフォワード設定する

よくSSH接続につかわれるツールで有名なteratermには、デフォルトでポートフォワード設定機能がついていて、これを利用します。

①teratermを起動し、メニューバーの「接続」→「SSH転送」を選択
②ポート転送画面で「追加」ボタンを押下

③ポート転送を行う向きの選択で「ローカルのポート」にチェックを入れ下記のように設定します
   ローカルのポート:11433(何でもよい)
   リモート側ホスト:接続するRDSのエンドポイント
   ポート:1143

④OKを選択する


2.teratermで踏み台にSSH接続する

次に踏み台にSSH接続するのですが、このとき1で設定したポートフォワード機能が有効になり、踏み台に接続したと同時に目的のサーバーにも接続されることになります。(トンネルを掘った状態にするともいいます)

①teratermメニューバーの「ファイル」→「新しい接続」で下記のように設定します
   ホスト:EC2のエンドポイント
   TCPポート:22
   サービス:SSHにチェック

②SSH認証画面でEC2へ接続するための認証情報を設定する
  ※基本ユーザー名と鍵設定で行けると思います

③OKを選択してSSH接続する


3.SSMSでログインする

1、2まででポートフォワーディングは完了しているので、この接続をつなげたままであとはツール(今回はSSMS)で直接SQLServerにつなげるだけです。
接続設定は下記のように設定します。
   サーバー名:127.0.0.1,11433
   認証:SQL Server認証
   ログイン:ルート権限ユーザー名
   パスワード:設定したパスワード

サーバー名は[127.0.0.1]のローカルホストを指定し、カンマでポート指定できますので、先ほど1で設定したローカルのポート(11433)をここに設定することで、 ローカルから踏み台サーバー経由、ポートフォワーディングでSQL Server接続が可能になります。

あとはSSMSで操作が可能なので、ツール内でデータベース作ったりテーブル作ったりが簡単にできます。


今回のポートフォワーディングを利用することで、もちろんSQL Server以外でも接続可能ですし、いろいろ応用できると思いますので、ぜひ参考にしてみてください。


, , , , ,

0 件のコメント:

コメントを投稿