PuTTY で dynamic application-level port forwarding

セキュリティーホールmemoさんにのっていた ssh を SOCKS proxy として使う(ねぎ式さん) が便利そう。

ssh のポートフォワーディングにはリモート・ローカル・ダイナミックの3種類があって、前の2つはよく知られているけど、ダイナミックはいまいち知られていない。これは、なんと、ssh を Socks Proxy として使うことができるのです。localhost の Socks Proxy 経由でアクセスすると、ssh でログインした先からコネクションがはられているように見える訳です。

PuTTYでの設定方法

さて、ssh のコマンドラインなら -D オプションを使用すればダイナミックポートフォワーディングできますが、PuTTY でこれを実現するにはどうしたらよいでしょう。まず、バージョンが 0.54(2004年02月12日公開) 以上を用意しましょう。このバージョンから、ssh の設定の 'Tunnels'(トンネル) パネルに 'Dynamic'(ダイナミック)が追加されています。

  1. 'Tunnels'(トンネル) パネルを表示して'Dynamic'(ダイナミック) を選択
  2. 'Source port'(源ソース) にローカルのポート番号(1080など)を指定。'Destination'(送り先) には何も入力する必要がありません。
  3. 接続する

クライアント(ブラウザ・メッセンジャーなど)の設定

例えば、IE から Socks サーバーを使うには次のようにします。

  • インターネットオプションの「接続→LANの設定」で「プロクシサーバーを使用する」にチェック
  • 詳細設定ボタンを押し、「Socks」に「localhost」「1080」と入力。「Socks」以外はからにする

これで、ssh 先からアクセスしているように見えます。

メッセンジャーなんかでも同様。個人的には、大学のSocksサーバーが糞で、ファイル送信ができなかったり、メッセージのロストが多かったのですが、ssh socks server 経由なら無問題になってウハウハです。