pusuke0418’s diary

異常にマルチタスクな社内SEのブログ

SSHポートフォワーディング(トンネリング)のコネクション

sshポートフォワーディング(トンネリング)は、おおまかにはsshサーバを踏み台にして、そこへのssh接続を文字通り"トンネル"のように使って、別の宛先に別のプロトコルを通す。使い方は調べるとたくさん出てくる。

例えば、下記のようにしたとする。
$ ssh username@192.168.1.11 -L 3456:192.168.1.11:80
3456は、クライアントにできるトンネルの入り口になるポート番号
クライアントからは、192.168.1.11 のsshサーバへsshでつながる
192.168.1.11:80はトンネルから出た先の最終的な接続先
※上記はsshサーバと最終的な接続先が同じホスト上

例えばクライアントが192.168.1.10だとして、上記のコマンドでsshトンネルを作ったのちに、クライアントから "127.0.0.1:3456" に接続した場合のコネクションは下記のようになる。
この場合だと、192.168.1.11でウェブサーバが動いていて、192.168.1.10でブラウザを立ち上げ、アドレスバーへ http://127.0.0.1:3456 とするイメージ。
[127.0.0.1:63611(ランダムポート)]---<コネクション>---[クライアント トンネル入口 127.0.0.1:3456]
[ssh クライアント 192.168.1.10:63588(ランダムポート)]---<コネクション>---[sshサーバ 192.168.1.11:22]
[sshサーバ トンネル出口 192.168.1.11:49999(ランダムポート)]---<コネクション>---[80番で待ってるサーバ 192.168.1.11:80]

実際の動作切り分けやログを考慮する際に。