WindowsのMySQL Workbenchで2段SSH踏み台で接続する


環境


やりたいこと

作業PCからDBに接続するまでに2段階のSSH接続を挟む環境があるとします。

この環境で作業PC(Windows)からMySQL WorkbenchでDBに接続します。

基本的なSSH操作はWSL上でコマンドを打つ前提とします。
Windows上でSSH操作をする場合は後述のSSHコンフィグのパスはWindows用に読み替えてください。
(SSHコマンドや秘密鍵パスなど)

駄目なパターン

WSL上の~/.ssh/configに以下の記載をしていれば、アプリケーションサーバーへSSH接続はできます。

Host fumidai-server
    HostName 111.111.111.111
    User my-user
    IdentityFile ~/.ssh/id_rsa_hoge
    IdentitiesOnly yes

Host app-server
    HostName 222.222.222.222
    User my-user
    ProxyCommand ssh -W %h:%p fumidai-server
    IdentityFile ~/.ssh/id_rsa_hoge
    ForwardAgent yes

※HostName, User, IdentityFileは適宜読み替えてください。

ここで指定しているProxyCommand設定により、
app-serverへSSHする時はfumidai-serverを経由するようになります。

しかし、MySQL WorkbenchのTCP/IP over SSHapp-serverを指定して
fumidai-serverapp-server ⇒ DB
という接続をしようとしても接続できません。
(MacやUbuntu等であれば接続できる。なぜかWindowsだけ不可。)

良いパターン

MySQL WorkbenchのTCP/IP over SSHは利用せずに、
SSH Local ForwardでDBに繋がるようにしておいてからMySQL Workbenchを繋ぎます。

まず、~/.ssh/configは以下のようにします。

Host fumidai-server
    HostName 111.111.111.111
    User my-user
    IdentityFile ~/.ssh/id_rsa_hoge
    IdentitiesOnly yes

Host app-server-localforward
    HostName 222.222.222.222
    User my-user
    ProxyCommand ssh -W %h:%p fumidai-server
    IdentityFile ~/.ssh/id_rsa_hoge
    GatewayPorts yes
    LocalForward 53306 hogehoge.ap-northeast-1.rds.amazonaws.com:3306

先ほどとの違いはGatewayPortsLocalForwardの設定が増えています。
これでapp-server-localforwardへSSH接続すれば、ローカルの53306ポートが
DBの3306ポートに繋がるようになります。
※DBのホスト名は適宜読み替えてください。

MySQL Workbenchの接続設定は以下のようにします。
SSHコンフィグファイルを読み込む必要はありません。

項目 内容
Connection Method Standard(TCP/IP)
Hostname 127.0.0.1
Port 53306
Username DBのユーザー
Password DBのパスワード

これで設定は完了です。

繋ぐ場合は以下の手順で繋ぎます。
① SSHコマンドでapp-server-localforwardに繋いでおく。
② MySQL WorkbenchでDBに接続する。