読者です 読者をやめる 読者になる 読者になる

Goldstine研究所

mosuke5's tech blog

ブログ移転しました。5秒後にリダイレクトします。

SSHでローカルポートフォワードを実際に試す

SSH・・・
いろんなことができる"らしい"ということは知っていたし、
例えばポートフォワーディングなんていうこともできるのも知っている。

でもそれがどんなものなのか自分の手で試したことはないし、
なんとなくただのサーバログインツールとして利用していた。

サーバインフラ技術に興味を持つようになっていろんなことを勉強していると、
ポートフォワーディングは必須な技術であることも感じ、
年末の持て余す時間を使ってSSHのローカルポートフォワードを試してみたのでメモする。

環境とやりたいこと

f:id:mosuke5:20141231162958p:plain

ローカルPCからexample.jpは以下で接続できる状態。

[local pc] $ ssh username@example.jp

またWebサーバのポート番号は80で、VPSのホストサーバからはWebサーバへ接続できる。
CUIなのでわかりづらいがcurlを打つとHello Worldが返ってきている。

[example.jp] $ curl 192.168.33.10
<html><body><h1>Hello World! Virtual Web Server</h1>
</body></html>

ローカルポートフォワードの実行

ローカルPCから以下を実行する。
以下のコマンドは、
ローカルPCのポート8888での接続はexample.jpからみて「192.168.33.10のポート80」に飛ばす
といったもの。

[local pc] $ ssh -L8888:192.168.33.10:80 username@example.jp

この状態でブラウザから以下にアクセスすると…
http://localhost:8888

なんと、ローカルホストにつないだはずが、example.jp上の仮想Webサーバのhtmlがうつっているではないか…

f:id:mosuke5:20141231163932p:plain

セキュリティはどうなの?

ローカルの端末からhttpで仮想のWebサーバに接続しているけど、セキュリティはだいじょうぶなのだろうか?
http通信だから暗号化はされていないのだろうか?
なんて疑問もあるが、それは問題ない。

SSHでローカルPCからリモートホスト(example.jp)までトンネルをはり、
そのなかをhttpで通信しているから全く問題なしといえる。

ローカルポートフォワードを利用する場合は、おそらく表には出したくないけど、
ローカルから接続したいなどの要件の時に使うと思うけど、SSHできちんと暗号化しているので安心。

最後に

SSHでできることはこの他にもたくさんある。
ポートフォワードだけみても他にも「リモートポートフォワード」や「ダイナミックポートフォワード」などがある。
リモートポートなどはいまぱっと試せる環境がなかったのでおいおい実践してみる…

SSHをただのログインツールだけに留めるのは今年で終わりにしよう…