Ein Freund möchte Ihren Arbeit-in-Progress-Blogbeitrag Korrektur lesen, aber seine Vorschau läuft nur auf localhost:8080. Mehrere Tools können helfen. Einige laufen als kommerzieller Dienst, wie ngrok oder Cloudflare Quick Tunnels. Einige sind selbst-hostbar, benötigen aber einen spezifischen Client, wie frp oder localtunnel. Einige erfordern nur einen einfachen SSH-Client, verlassen sich aber auf einen spezifischen SSH-Server, wie sish. Lassen Sie uns eine selbst-hostete Lösung mit ausschließlich Open SSH und nginx implementieren!
Zunächst leiten wir Verbindungen von einem Port auf einem Remote-Server zu Ihrem lokalen Dienst weiter: `$ ssh -N -R 0:localhost:8080 web02.luffy.cx`. Wenn Sie `0` als Remote-Port angeben, weist der Server einen freien Port zu, wie beispielsweise 41535. Anschließend konfigurieren wir nginx, um Anfragen von `https://p41535.ssh.luffy.cx` an `http://127.0.0.1:41535` weiterzuleiten, indem wir einen Server-Block verwenden, der dem Port im Domainnamen entspricht.
Wir müssen außerdem DNS-Einträge für `*.ssh.luffy.cx` hinzufügen und ein Wildcard-Zertifikat über Let’s Encrypt erhalten. In meinem Fall erhält Nix OS die Zertifikate automatisch. Die Zugriffskontrolle wird über das Modul ngx_http_secure_link_module erreicht, das einen Hash über eine Reihe von Werten berechnet, einschließlich eines Geheimnisses, und ihn mit dem Hash aus der Anfrage vergleicht. Der Hash wird base64-kodiert und als Benutzername in die URL eingefügt, zusammen mit seinem Ablaufzeitstempel.
Wichtige Entitäten: Unternehmen: Cloudflare, Let's Encrypt | Orte: localhost:8080, web02.luffy.cx, p41535.ssh.luffy.cx, ssh.luffy.cx, acme.luffy.cx, Route 53
Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing