SSH にはポートフォワーディングの機能が備わっています。良く使われるのは -L オプションで,ローカルのポートをリモートのポートに転送するものです。他に -R と -D という 2 つのポートフォワーディングのオプションがあり,今回紹介したいのは -D オプションです。
-D オプションはダイナミック (dynamic) の頭文字で,文字通り動的なポートフォワーディングを可能にします。ローカル側ではソケットを割り当てるので, SOCKS サーバーをプロキシに設定できるアプリケーションであれば,そのままバインドしたアドレス・ポートが SOCKS サーバーになります。
例えば, ssh.example.com という SSH サーバーに対して,クライアントが ssh -f -D 8080 ssh.example.com という接続をしたとします[A]。このとき,ローカルの適当なアプリケーション (例えばブラウザ) のプロキシ設定で, SOCKS サーバーを localhost:8080 と指定すれば良いわけです。
ちなみに PuTTY でダイナミックポートフォワーディングを実現するには,「Connection」 → 「SSH」 → 「Tunnels」 の 「Source port」にポートを指定して「Add」ボタンをクリックすれば良いです。
脚注
- -fはバックグラウンド実行オプションです。 [↩]
