DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

SSHポートフォワードの使い方

SSHポートフォワードとかSSHトンネリングとか言ったりするらしいが閉鎖された環境のPCの同ネットワーク内にSSHログイン出来るPCがあるならSSH接続の中を通ってアクセスできるというものだ。

f:id:DreamerDream:20170220122328p:plain

 

以下の環境を説明する。

f:id:DreamerDream:20170220092552p:plain

今、自分(user)は外出先からメインPCを操作しているとする

クライアントPC、サーバーPC、ローカルPCという用語は自分がポートフォワードする時に壮大な勘違いしていたので(汗 あえて用いないことにする。

メインPCから自宅のSSHサーバーにはアクセス権があり、且つSSHサーバーはSSHポートをインターネットに開放している状態である。

ターゲットは外部に開放していない状態でWebサーバーが動いている。SSHサーバーのブラウザからはターゲットPCのWebページを閲覧することは出来る

図の「」がインターネットに開放されているネットワークで「」が閉鎖されているLAN内のネットワークを示す。

 

  • メインPCからSSHサーバーへはSSH接続が可能
  • メインPCからターゲットへはアクセス不可能
  • SSHサーバーからターゲットへはアクセス可能

 

という状態である。

 

 

 

このような状態の時にSSH操作をしてメインPCのブラウザからターゲットのWebページを表示させることが出来るのがSSHポートフォワード機能だ。

イメージにするとこうだ。

f:id:DreamerDream:20170220113719p:plain

ターミナルでSSH接続をしている中をHTTP接続を通すということになる。

なので本当にトンネルのような接続になる。

 

僕は勘違いしてこのようなイメージをしていた。

f:id:DreamerDream:20170220115721p:plain

ルーターのポートフォワード設定のようなものだと思っていたのだ。

このようなイメージで操作すると壮大な勘違いからななかなか抜け出せないので注意。

 

このイメージから救ってくれたページもご紹介しておきます。

vogel.at.webry.info

書式

ssh user@sshserver.com -L 8000:192.168.0.10:80

ssh [sshユーザー名]@[sshサーバーアドレス] -L [メインPCで接続操作するポート]:[SSHサーバーから見たターゲットのアドレス]:[ターゲットのポート]

 

という書式になる

ここで気をつけるのが[メインPCで接続操作するポート]である。

Webページを繋ぎにいくのはSSH接続要求をだしているメインPCである。

Webページを表示する時はメインPCのブラウザから「メインPCアドレス:ポート」に繋ぐのである。

ブラウザで

http://localhost:8000

と入力するとブラウザでターゲットのWebページを閲覧することが出来る。

通信はSSH接続の中を通るので当然セキュアな通信だ。

 

SSHのポートを変更(3000だとする)している場合は-pオプションで

ssh user@sshserver.com -L 8000:192.168.0.10:80 -p 3000

となる。

kampa.me