EC2 上で Proxy.py を軽量 HTTP プロキシとして動かす
認証機構を持たない Proxy.py を EC2 インスタンス上で動かし、SSH トンネル経由で安全にアクセスします。
Proxy.py は軽量な HTTP プロキシサーバーで、テストやトンネリング用途なら小さな EC2 インスタンスでも動作します。
2022 年 5 月 27 日、AWS はリモートホストへのポートフォワーディングを導入しました。詳細は公式ドキュメントを参照してください。
セットアップ
Proxy.py をインストールします。
pip install proxy.py以下のコマンドで Proxy.py を起動します。
proxy --port 8080SSH セッションを閉じた後も Proxy.py を動作させるには、以下のコマンドを使います。
nohup proxy --port 8080 > /dev/null &起動後、ターミナルには以下のようなログが表示されます。
pid:3330 [I] plugins.load:85 - Loaded plugin proxy.http.proxy.HttpProxyPluginpid:3330 [I] tcp.listen:82 - Listening on 127.0.0.1:8080pid:3330 [I] pool.setup:108 - Started 1 acceptors in threaded mode...テスト
EC2 インスタンスへの SSH トンネルを確立します。
ssh -L 8080:localhost:8080 -i .ssh/YOUR_PRIVATE_KEY ec2-user@YOUR_HOSTGoogle へリクエストを送信し、プロキシをテストします。
curl www.google.com -x http://localhost:8080プロキシが正しく動作していれば、Google から HTML レスポンスが返ります。
まとめ
Proxy.py と SSH トンネルを組み合わせることで、認証のないプロキシポートを公開せずに、EC2 インスタンス上へ軽量な HTTP プロキシを構築できます。
proxy --port 8080 は認証なしでリッスンを開始します。ssh -L 8080:localhost:8080 によるトンネルを使えば、インスタンスのセキュリティグループでポート 8080 を公開せずにアクセスできます。このポートを外部へ公開すると、オープンプロキシになるおそれがあります。
nohup proxy --port 8080 > /dev/null & で起動すると、SSH セッションを終了した後もプロセスが動作します。無人で稼働させる前に、プロセスが 127.0.0.1 にバインドされ、セキュリティグループにポート 8080 のインバウンドルールがないことを確認してください。
Related posts
Python で OPC UA の変数ノードを監視する
opcua-asyncio を使って OPC UA の変数ノードを購読し、ポーリングではなくサーバーからの通知で変更を処理します。
Tesseract と Pytesseract による日本語 PDF の OCR 処理
Tesseract OCR v4 と pytesseract を使って PDF から日本語テキストを抽出し、出力を整えるための正規化処理も行います。
インターネット接続なしで Python パッケージをインストールする
接続可能なマシンで Python パッケージをダウンロードして転送し、インターネットに接続できない環境へインストールする方法を解説します。
Session Manager で EC2 に接続する(SSH 不要)
Systems Manager の Session Manager を使い、SSH キーも踏み台サーバーもポート 22 の開放も不要な状態で EC2 インスタンスにシェルアクセスする方法を解説します。
PhpStorm と Xdebug で AWS EC2 上の PHP をリモートデバッグする
PhpStorm と Xdebug を使って EC2 上の PHP アプリケーションをリモートデバッグする方法を、サーバー側の php.ini の設定から IDE のパスマッピングまで解説します。
