SSHポートフォワードとかSSHトンネリングとか言ったりするらしいが閉鎖された環境のPCの同ネットワーク内にSSHログイン出来るPCがあるならSSH接続の中を通ってアクセスできるというものだ。
以下の環境を説明する。
今、自分(user)は外出先からメインPCを操作しているとする
※クライアントPC、サーバーPC、ローカルPCという用語は自分がポートフォワードする時に壮大な勘違いしていたので(汗 あえて用いないことにする。
メインPCから自宅のSSHサーバーにはアクセス権があり、且つSSHサーバーはSSHポートをインターネットに開放している状態である。
ターゲットは外部に開放していない状態でWebサーバーが動いている。SSHサーバーのブラウザからはターゲットPCのWebページを閲覧することは出来る。
図の「青」がインターネットに開放されているネットワークで「赤」が閉鎖されているLAN内のネットワークを示す。
という状態である。
このような状態の時にSSH操作をしてメインPCのブラウザからターゲットのWebページを表示させることが出来るのがSSHポートフォワード機能だ。
イメージにするとこうだ。
ターミナルでSSH接続をしている中をHTTP接続を通すということになる。
なので本当にトンネルのような接続になる。
僕は勘違いしてこのようなイメージをしていた。
ルーターのポートフォワード設定のようなものだと思っていたのだ。
このようなイメージで操作すると壮大な勘違いからななかなか抜け出せないので注意。
このイメージから救ってくれたページもご紹介しておきます。
書式
ssh user@sshserver.com -L 8000:192.168.0.10:80
ssh [sshユーザー名]@[sshサーバーアドレス] -L [メインPCで接続操作するポート]:[SSHサーバーから見たターゲットのアドレス]:[ターゲットのポート]
という書式になる
ここで気をつけるのが[メインPCで接続操作するポート]である。
Webページを繋ぎにいくのはSSH接続要求をだしているメインPCである。
Webページを表示する時はメインPCのブラウザから「メインPCアドレス:ポート」に繋ぐのである。
ブラウザで
と入力するとブラウザでターゲットのWebページを閲覧することが出来る。
通信はSSH接続の中を通るので当然セキュアな通信だ。
SSHのポートを変更(3000だとする)している場合は-pオプションで
ssh user@sshserver.com -L 8000:192.168.0.10:80 -p 3000
となる。