チーズナンの裏

都内勤務社畜Webエンジニアの自分用メモ。基本的にはフロント中心。

AmazonRDS(MySQL)にSSHポートフォワード接続(Mac)

バイト先でサーバーをAWSに移行することになり、それにともないDB接続環境も変化した。
今までは脳死でやってたDB接続もサイトがSSL対応したことに伴って、一捻りが必要になってしまった(らしい)。

はじめに

  • 最初はTeraTermを使った方法*1を勧められたが、Macで開発してるんやしTerminalからできるやろーと思い、調べることに。
  • sshポートフォワーディングとは

    「ポートフォワーディング」とは、インターネットから特定のポート番号宛てに届いたパケットを、あらかじめ設定しておいたLAN側の機器に転送する機能です。 1つのグローバルIPアドレスでポート毎に複数のサーバーへ振り分けを行ったり、ポート変換を行うことができます。*2

  • 個人的な理解として
    • Webサーバー・DBサーバーがあるとするとき、DBサーバーへのアクセスをWebサーバーからのみに制限する。
    • 外部からDBサーバーにアクセスするために、まずWebサーバーにssh接続する
    • その後、Webサーバーを踏み台としてDBサーバーにアクセスする!という認識。

autossh

  • このサイト様*3を参考にさせていただいた。
  • サイト通りにまずCLIツールであるautosshを利用した
  • それに従い、インスコ→コマンドを叩いたが無反応...

Coccinellida

  • やっぱりGUIっしょ!と思い、導入するが同じく無反応
  • 使い方については上記と同様のサイトから

おとなしくsshコマンド

  • やっぱり普通に接続に問題があると考え、シコシコsshで接続を試みる
  • 該当サイト様*4内で紹介されている記法に従うとあっさり接続成功...
ssh -f -N -L 3307:hogehoge.xxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com:3306 -i /path/to/key.pem user@${InstanceIP}
  • 今までうまくいかなかった理由として
    • -i 等のオプション、sshコマンドの記法を理解していなかった
    • 公開鍵・秘密鍵、理解してるか?等が挙げられる

参考サイト様

qiita.com

cloudpack.media

qiita.com

exploratory.io