Linux

SSH じゃないポートフォワーディング

localhost のあるポートを別のホストのポートにリダイレクトしたい場合、よくやるのは以下のように SSH ポートフォワーディングする方法。

$ ssh example.com -N -L 8080:localhost:80

この例だと、localhost のポート 8080 にアクセスすると example.com のポート 80 に繋がる。

しかしこの方法では、ホスト (この例でいうと example.com) に SSH 接続できないとポートフォワーディングできない。

もし対象ホストの対象ポートが外向けに公開されているのであれば、 socat を使って以下のようにしても同じことができる。

$ socat TCP4-LISTEN:8080,fork TCP4:example.com:80

ポートフォワーディングと言うより、TCP リレーとか TCP リダイレクトと言う方が正確かもしれない。