Mysql workbenchで2段以上の多段SSHを使った接続方法を調べたので備忘録として残しておきます。
(踏み台1段までならMysql workbenchがサポートしてます。)
##前提
- host1とhost2の2台のサーバーが存在。
- host2にmysqlサーバーがインストールされている。
- host2のサーバーへはアクセス制限があり、host1からでないとアクセスできない。
##やりたいこと
- host2にあるmysqlサーバーにmacのmysql Workbenchを使って接続したい。
[Mac] ==> [host1] ==> [host2] ==> [Mysql]
##実装
mysql workbenchでは1段階しか踏み台できないので、まずはターミナルからSSHで穴(ポートフォワード)をつくってからworkbenchを繋ぐ。
- 1.host1を踏み台にしてhost2へSSH接続 → .ssh/configを使って簡単に!
- 2.Mysql workbench接続
1.host1を踏み台にしてhost2へSSH接続
ターミナルからhost1を踏み台にする設定。
後から簡単なコマンドで接続できるように.ssh/configを編集する方法を解説します。
(~/.ssh/configは無ければディレクトリと合わせて新規作成)
~/.ssh/configに接続情報を記載。
Host host1
hostname XXX.XXX.XXX.101
port 22
user user1
IdentityFile ~/.ssh/user1.pem
Host host2
hostname XXX.XXX.XXX.102
port 22
user user2
IdentityFile ~/.ssh/user2.pem
ProxyCommand ssh host1 -W %h:%p
GatewayPorts yes
LocalForward 53306 127.0.0.1:3306
ポートフォワード
GatewayPorts yes
LocalForward 53306 127.0.0.1:3306
←この部分。
-
53306
← local(自分のMac) に開くポート番号(任意の数字) -
127.0.0.1:3306
← 接続先情報(127.0.0.1 = host2 の 3306ポート)
ファイルを保存したらターミナルから下記のコマンドで接続。
$ssh host2
これでlocalhostの53306ポートがhost2の3306と接続され利用可能に。
※ ターミナルを終了させると、接続も切れるのでターミナルは開いたままに。
2.Mysql workbench接続
ターミナルでポートフォワードしたlocalhostのポートを使って接続します。
Mysql workbenchでは普通のサーバーを追加するのと同じ要領で下記のように設定。
Hostname: 127.0.0.1 ← これは自分のMac
port: 53306 ←自分で開けたポート番号
Username: mysqluser
pass:*****
これで登録した接続を開けば connection successです!