SSHポートフォワーディングのまとめ

普段何気なく利用しているSSHのポートフォワード。

よくコマンドを忘れてしますのでまとめてみました。 ひとえにポートフォワードといっても、

  • ローカルフォーワード
  • リモートフォワード

があります。

SSHローカルフォワード

<Local> port:8080 --- via SSH --------
              ------------>>> <Remote Host> ----->>> <Target Host> port:80

ローカルホストの特定ポートへの情報をターゲットホストの特定のポートへ転送する技術です。 ローカルホストの特定のポートを、SSHトンネルを介してリモートホストへ接続して、接続先のリモートホストから接続が可能なターゲットの特定のポートにマッピング。 上の例だと、ローカルホストのポート8080を、ターゲットホストのポート80にマッピングしています。

ローカルフォワーディングのコマンド

$ ssh -N -f -L <Local Port>:<Target Host>:<Target Port> <Remote Host>

上のコマンドで-N、-fオプションはそれぞれ。

  • -N : コマンドを発行しない
  • -f : バッググランド実行

SSHリモートフォワード

<Local> port:9000 <<<--- via SSH --------
              ------------- <Remote Host> <<<----- <Target Host> port:9001

リモートホストの特定ポートへの情報をローカルホストの特定のポートへ転送する技術。 ローカルホストのポートとターゲットホストのポートのマッピングはローカルホストと同じ、コマンドオプションが違うだけ。

SSHリモートフォワーディングのコマンド

$ ssh -N -f -R <Target port>:<Target Host>:<Local Port> <Remote Host>

xdebugなど、ターゲットホストからローカルホストへ接続する必要があるものなどで役に立ちます。

簡単にまとめて、それでは。