今回理解したのはローカルポートフォワーディングと呼ばれるもの。
準備
構図はこんな感じ
自分の PC → 踏み台 → サーバーという形でつなぐ。
※つなぐ(繋ぐ)。アクセスする、接続する、の意味。
問題: 踏み台からサーバーにつなぐところがだるい
PC は Windows で Teraterm が使えるけど、踏み台は Linux で Teraterm は使えない。SSH コマンドとか使うのだるい。
PC から直接サーバーにつなぐ感じで使えたら便利 なのでそうしたい。
どうやる?
Ans: ポートフォワーディング(ポート転送) を使う。
長いし、わかりにくいので、以下「ポート転送」を使う。
1: 踏み台に転送してもらえばいい、と考える
踏み台につないだ後、さらにサーバーにつなぐ部分も自分でやるのがだるいわけだ。
そこを踏み台に代行してもらえないだろううか?
図にすると、以下のような感じ。
自分としては踏み台につなぐところまではやる。その先は踏み台さん、あなたがやってくれませんか?とする。
2: そんなことできるの?
できる。
踏み台には sshd というデーモン(常駐プログラム)がいる。こいつはそもそも SSH 接続を司る機能だが、転送機能 も持っている。
3: 転送の仕組み
sshd は「sshd に届いた ポート xx の分を、あるサーバー の ポート yy に転送する」という形で転送を担う。必要なパラメーターは以下の3つ。
- 1: sshd に届く側のポートxx
- 2: あるサーバーの接続先(IPアドレスとか)
- 3: 同上、そのサーバーのポートyy
すなわち図にすると、以下のようになる。
4: あとは転送を依頼すればいい
あとは sshd に転送設定を教えればいい。これは SSH クライアント側で行う。Teraterm の場合は、以下のようになる。
ややこしいが、上記の設定画面では踏み台の接続先は記載していない。踏み台の接続先はこっちでやる。
ポート転送完了!
これでポート転送が行えるようになる。
自分は Teraterm で踏み台の xx につなぐだけで、実際にはサーバーの yy にまでつながってくれる。
内部的には、踏み台で動いている sshd が(Teraterm からの指定に従い)転送を行ってくれている。