SSHしか通らないサーバーで適当なポートに立ち上げたサービスにアクセスする
railsとかjsTestDriverとかJenkinsとか最近ではPHPのビルトインウェブサーバーもそうなんですが、コマンド一発サービス起動して後はブラウザからアクセスするだけで利用できるものがよくあります。
でも、サービスを起動したサーバーでは開けてるポートが限られてて結局使えない、とかいうこともままあります。
↓
ダイナミック転送、SocksProxyでかいけつ!
PuTTY + pfwd でダイナミック転送の設定
pfwd.iniの編集
puttyのインストールフォルダに pfwd_sample.ini ファイルがあります。
それをコピーして pfwd.ini を作成して編集。
編集を行なう部分を抜粋しました。
接続先サーバーの設定
[SSH] ; SSHサーバーアドレス ; PuTTYで保存したセッションの設定を使用する場合には@セッション名で指定します。 ; 省略できません。 Host=dev.example.com
秘密鍵(.ppk)
; プライベートキーファイル (rsa, rsa2, dsa) ; ・省略時にはセッションに設定されているものが使われます ; puttygen.exeで作成(変換)したファイル PrivateKey=C:\path\to\privatekey\hoge_dsa.ppk
ユーザー名
; ログインユーザ ; ・省略時にはセッションに設定されているものが使われます User=calpo
ポート1080でダイナミック転送を行なう設定
;;================================================= ;; HOST4 Dynamic Forwarding ;;================================================= 01=D1080
pfwd 実行
これで、pfwdがlocalhost:1080で受けて、iniで指定したホストに転送を行なうようになります。
エラーなどあった場合こちらのページが参考になりました。
http://old.typemiss.net/blog/kounoike/20061019-100
ブラウザの設定
そして肝心のブラウザの設定です。
やろうとしていること
- ブラウザには http://development-server:8080/ みたいにして、アクセス
- ブラウザは development-server へのアクセスを localhost:1080 に投げる
proxy.pac の作成
development-serverへのアクセスの場合のみプロキシを通すようにしたいです。
これにはスクリプトが使えます。
以下のようなファイルを作ります (名前は何でもいい)
proxy.pac
function FindProxyForURL(url, host) { if (host == "development-server") { return "SOCKS5 127.0.0.1:1080"; } return "DIRECT"; }
ブラウザの設定
プロキシの設定に先ほど用意したスクリプトを使うようにします。
- Firefox の場合
- ツール > オプション > 詳細 > 接続 > 接続設定
- 自動プロキシ設定スクリプトURL にproxy.pacを指定 > 再読み込み
- 例) file:///C:/etc/proxy.pac
Firefoxで問題があった場合の追加設定
名前解決で問題があった場合はこちらが参考になりました。
http://www.knonline.net/d/?date=20080611
- アドレスバーに「about:config」と入力して開く
- network.proxy.socks_remote_dnsの項をtrueに変更する
準備完了
あとは dev.example.com サーバーでJenkinsなり何なり立ち上げて
http://development-server:8080/ とかでアクセスしてみましょう。