31 Dec 2014, 17:05

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

SSH・・・
いろんなことができる”らしい”ということは知っていたし、
例えばポートフォワーディングなんていうこともできるのも知っている。
SSHを制する者がインフラを制する、なんていうことも聞いたことがある。

でもポートフォワーディングがどんなものなのか自分の手で試したことはないし、
なんとなくただのサーバログインツールとして利用していた。

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

環境とやりたいこと

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

[local pc] $ ssh [email protected] 

また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 [email protected] 

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

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

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

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

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

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

最後に

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

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

関連する記事はこちら
  • SSHポートフォワードを通してhttps接続をするときの注意点 (2015/02/11)
  • デスクトップUbuntuにVNC接続。ついでにSSHローカルポートフォワードの復習。 (2015/08/13)
  • 【VPS1台でインフラ勉強】多段SSH設定(おまけ) (2014/11/09)
  • Ansible、実行速度高速化の実験。ControlMasterとPipeliningについて (2015/12/01)
  • Ansibleを踏み台サーバ越しに実行する方法 (2015/09/25)
  • comments powered by Disqus
    このエントリーをはてなブックマークに追加