Edited at

ssh踏み台サーバ越しに、いろんなサービスにアクセスする方法集

More than 1 year has passed since last update.


背景

こんな感じで、sshで接続できるのは、とあるサーバが1台だけで

その先にプライベートネットワーク上では、アクセスできるmysqlに繋ぎたいときどうすれば良いかの話です。

Network diagram (1).png


方法


Windowsの場合

Tera Termにすばらしい機能がついてます!

SSHポート転送!!

SSH転送.png

Web Serverにsshでログインした状態で、このSSHポート転送でローカルのポートを画像のように設定します。

これにより、mysql -h 127.0.0.1 -P 13306 -u root -pで接続できるようになります。

これだけだと、a5m2とかのsshトンネル接続で良いじゃないかと思われると思います。

私の場合、cakephpから、sshトネリング接続するのが困難だったのでこの手を使いました。

レプリケーションしている場合に

13306は、マスターの3306へ

23306は、スレーブの3306へ

という事が可能になるのです。

ちなみに、Tera Termの設定を保存しておかないと毎回設定する羽目になります。


Macの場合

いろいろやった結果、Coccinellidaが一番でした。

http://coccinellida.sourceforge.net/


トンネルを設定と接続

1.上部メニューの小さいてんとう虫をクリックすると「Preferences…」というのがあるので、それを開きます。

2.Tunnelタブを開きます。

3.Addボタンでトンネル設定を追加します。

4.Generalではトンネルになるホストの設定をします。

Name: わかりやすい任意の名前(xxxトンネルとか)

Host: ホスト名

Port: 22 (他のポート指定がある場合はそのポート番号)

User: ユーザー名

Password: パスワード

Identity: 秘密鍵を選択します。

5.Port Forwardingでは、トンネルを介して接続する本命のサーバーの設定をします。Addボタンで追加します。

Type: localのまま

Local Port: 13306 (任意のポートでもいい)

Local Host: localhost

Remote Host: 10.102.55.203(本命のサーバーのIP、ホスト名)

Remote Port: 3306 (他のポート指定がある場合はそのポート番号)

これでsave(保存)。

再びてんとう虫をクリックすると、追加したサーバー名が出ているので、選択して接続します。

パスワードを要求されるので、入力して接続します。

接続成功しても何も起きないので達成感ありません。

あとは、Windowsの時と同じように、ローカルのポートへ接続すればOK