SSHのDynamic ForwardでSOCKS Proxyしてみる
お客さんのサーバにアクセスするのに踏み台サーバを経由しなきゃいけないんだけど、いちいち2回ログインするのが面倒くさかったので、PuTTY付属のpfwdでDynamic Forwardしてみたら便利になった。
やべーこれは便利だと一人で盛り上がってたら「社内Wikiにやり方書いてよ」って言われたのでついでにこっちにも書いておく。
このDynamic Forwardを利用すると、SSHでログインした先をSOCKS Proxyとして利用できるので、あとはSOCKS対応アプリの設定を変更してアクセスすれば全部ログイン先からのアクセスってことになる。
Port Forwardと違って何番が何番ってのもないので便利。
SOCKS対応のアプリって何があるんだよ、って思うかもしれないけどわりと対応しているものは多い。
主要ブラウザはOpera以外だいたい対応してるし、会社のPCで確認できるだけでもThunderbird、WinSCP、FFFTP、TeraTerm、Windows Live Messengerあたりが対応していた。
WindowsだとPortForwarderとか色々あるけど、とりあえず身近なPuTTYで。
オリジナルのPuTTYには実はなくて、PuTTYごった煮版に同梱されているpfwd.exeを使う。
PuTTY本体でもトンネルの設定で「ダイナミック」を選択すれば出来るけど、pfwdならタスクトレイに常駐してくれてウィンドウが邪魔にならないのでおすすめ。
pfwdの設定
ごった煮版に同梱のpfwd_sample.iniをpfwd.iniという名前でコピーする。リネームでもいいけど。
んで、次のような感じで編集する(長いのでコメントは省略した)。
[SSH] Host=踏み台サーバのアドレス Port=22 Compression=1 ProtocolVersion=2 PrivateKey=踏み台サーバで鍵認証に使う自分の秘密鍵 User=踏み台サーバのログインユーザ ;Password= [FORWARD] 01=D1080
[SSH]の部分で踏み台サーバの設定をする。
- Host
- 踏み台サーバのアドレス
- Port
- 踏み台サーバのsshポート
- User
- 踏み台サーバにログインするユーザ
- PrivateKey
- 鍵認証の場合は自分の秘密鍵
- Password
- パスワード。鍵認証の場合はコメントアウトでおk
続いて[FORWARD]の部分でPort ForwardとかDynamic Forwardの設定をする。
たぶんサンプルにはデフォルトでいくつか記述されていると思うので、不要なら削除するなりコメントアウトするなり。
キー名は01から連番で使うらしいんだけど、欠番があるとうまく動かなかったのでデフォルトを消すときは注意。
で、Dynamic Forwardの場合はD<ポート番号>という設定をする。このポート番号がローカルでの待ち受けポートになるので、アプリのプロキシ設定ではこのポートを指定する。一般的には1080らしい。
pfwd.exeを起動
起動する。
鍵にパスフレーズがかかってる場合はダイアログが出てくるので入力する。pageant.exeが持ってれば聞いてこない。
これで踏み台サーバに裏でログインしつつSOCKS Proxyとしてポートの待ち受けを始める。