WindowsのMySQL Workbenchで2段SSH踏み台で接続する
投稿日:
環境
- Windows 10
- MySQL Workbench 8.0
- WSL2 (Ubuntu 20.04)
やりたいこと
作業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 SSH
でapp-server
を指定して
fumidai-server
⇒ app-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
先ほどとの違いはGatewayPorts
とLocalForward
の設定が増えています。
これで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に接続する。