HeadlinesBriefing HeadlinesBriefing.com

SSH と Nginx を使ったセルフホスト型 HTTP トンネル

Hacker News •
×

友人があなたの仕事中のブログ投稿を校正したいと思っていますが、そのプレビューは localhost:8080 でしか実行されません。いくつかのツールが役立ちます。一部は商用サービスとして動作し、たとえば ngrok や Cloudflare Quick Tunnels があります。一部はセルフホスト可能ですが、特定のクライアントが必要で、たとえば frp や localtunnel があります。一部はプレーンな SSH クライアントのみを必要としますが、特定の SSH サーバーに依存しており、たとえば sish があります。Open SSH と nginx のみを使用してセルフホスト型ソリューションを実装しましょう!

まず、リモートサーバーのポートからローカルサービスへの接続を転送します: `$ ssh -N -R 0:localhost:8080 web02.luffy.cx`。リモートポートとして `0` を指定すると、サーバーは空いているポートを割り当て、たとえば 41535 になります。その後、ドメイン名のポートに一致するサーバーブロックを使用して、nginx を設定し、`https://p41535.ssh.luffy.cx` からのリクエストを `http://127.0.0.1:41535` にプロキシします。

また、`*.ssh.luffy.cx` の DNS レコードを追加し、Let’s Encrypt を通じてワイルドカード証明書を取得する必要があります。私の場合、Nix OS が証明書を自動的に取得します。アクセス制御は、ngx_http_secure_link_module を使用して実現されます。このモジュールは、秘密を含む一連の値に対してハッシュを計算し、リクエストからのハッシュと比較します。ハッシュは base64 エンコードされ、URL のユーザー名として配置され、その有効期限のタイムスタンプとともに含まれます。

主要なエンティティ: 企業: Cloudflare, Let's Encrypt | 場所: localhost:8080, web02.luffy.cx, p41535.ssh.luffy.cx, ssh.luffy.cx, acme.luffy.cx, Route 53

出典: Hacker News · 要約:HeadlinesBriefing