sshポートフォワード メモ


ことのはじまり

「【外部からはアクセスできないネットワーク】にアクセスできるネットワーク(つまり内部ネットワーク)」に外部からsshできる僕は【外部からはアクセスできないネットワーク】に外部からアクセスする権利あるのでは...?と考えた(アホ)。
だって結局、「【外部からはアクセスできないネットワーク】にアクセスできるネットワーク」にsshしてしまえば【外部からはアクセスできないネットワーク】にアクセスできるんだもの(sshした時点でもう内部なので当たり前)。
調べたらsshポートフォワードという技術があるらしい。

名称の整理

・【外部からはアクセスできないネットワーク】
ここが目的なので、ここにポートフォワードさせたい。ということで、「フォワード先」と呼ぶことにします。

・【外部からはアクセスできないネットワーク】にアクセスできるネットワーク
要するに「フォワード先にアクセスできるネットワーク」のことなので、フォワードさせるための「仲介サーバ」と呼ぶことにします。

・僕
要するにローカルのこと。
フォワードさせるネットワークになるので、「フォワード元」と呼ぶことにします。

フォワード元から仲介サーバにsshできる場合

ssh 仲介サーバ -L フォワード元ポート:フォワード先IP:フォワード先ポート

トンネルを作りながら仲介サーバにsshするイメージです。

仲介サーバからフォワード元にsshできる場合

ssh フォワード元IP -R フォワード元ポート:フォワード先IP:フォワード先ポート

フォワード元に一度sshして、仲介サーバへ戻りながらトンネルを作っていくイメージです。

注意

フォワード先が仲介サーバの場合、「フォワード先IP」は「localhost」になります。
なぜかというと、コマンド最後の「フォワード先IP:フォワード先ポート」の部分は「sshした後」で考えるからです。

その他のおすすめオプション

・-N

リモートコマンド(sshすると同時にコマンドを実行させるやつ)を実行しません。
つまり、ポートフォワードだけ行います。

・-f

バックグラウンドでsshします。

参考

SSHポートフォワード(トンネリング)を使って、遠隔地からLAN内のコンピュータにログインする - ククログ(2014-09-12) ( archive )
sshポートフォワーディング - Qiita ( archive )
ssh ポート転送 ( archive )