888 888 888 88888b. .d88b. 888 888 88888b. .d88b. .d8888b .d88b. 888 "88b d8P Y8b `Y8bd8P' 888 "88b d88""88b 88K d8P Y8b 888 888 88888888 X88K 888 888 888 888 "Y8888b. 88888888 888 888 Y8b. .d8""8b. 888 d88P Y88..88P X88 Y8b. 888 888 "Y8888 888 888 88888P" "Y88P" 88888P' "Y8888 888 888 888 h e x p o s e self-hosted tunnels, over plain SSH Expose a port on your machine to the internet. There is nothing to install: your ssh client already speaks the protocol. First time: get access 1. Create a key, if you do not already have one: $ ssh-keygen -t ed25519 [i] Press Enter at every prompt to accept the defaults. 2. Send the PUBLIC key to the operator and wait for them to add it: $ cat ~/.ssh/id_ed25519.pub Everyday use 1. Run something locally: $ python3 -m http.server 5000 2. Tunnel it: $ ssh -p 9999 -R0:127.0.0.1:5000 h.0x7359.com [+] https://a1b2c3d4.h.0x7359.com [i] Send that URL to anyone. Keep the ssh session open. Other modes $ ssh -p 9999 -R0:127.0.0.1:22 tcp@h.0x7359.com [+] h.0x7359.com:38091 [i] Raw TCP: nc, ssh, psql — anything that is not HTTP. $ ssh -p 9999 -R0:127.0.0.1:5000 qr@h.0x7359.com [i] Same as the first, plus a QR code of the URL. Useful to quickly open link on mobile devices. $ ssh -p 9999 -R0:127.0.0.1:5000 -L4300:localhost:4300 h.0x7359.com [i] Adds a live request inspector at http://localhost:4300 ----------------------------------------------------------------------- Host key: SHA256:LBuEERL0j2y+51+SILHAkvqmQV3MaoTCjSAhN1Q0JN8 Check this on your first connection. It does not change.