sshfwd/README.md
2023-03-27 15:31:51 -06:00

40 lines
1.2 KiB
Markdown

# sshfwd
This is a reverse proxy service that uses SSH as the transport. It works similar to ngrok or localtunnel.me.
You run the service on a internet addressible host and ssh to it. Using ssh remote forwards (ie. ssh -R) the port on the remote host will be forwared to
the configured port on your local machine.
on Remote host:
```sh
$ make genkeys # generate the services host keys.
$ SSH_HOSTKEYS=hostkeys SSH_LISTEN=:2222 SSH_DOMAIN=example.com sshfwd # run service on port 2222
```
For best results place this behind a TLS termination that has a wildcard certificate and CNAME for `*.yourdomain.com`
on your local machine have a ssh private and public key available:
```sh
$ export LOCAL_PORT=3000; export PRIV_KEY=~/.ssh/id_ed25519; sh -c "$(shell http --form POST :2222 pub=@$(PRIV_KEY).pub)"
```
This will setup a reverse proxy on the example host that you can then use to access the local port. It will print a name unique to your ssh key.
```sh
$ http GET romeo-nine-lake.example.com:2222
```
All accesses to the proxy will have the HTTP request printed out to the ssh connection.
```
GET /connect HTTP/1.1
Host: romeo-nine-lake.example.com
Accept: */*
User-Agent: curl/7.64.1
X-Forwarded-Host: romeo-nine-lake.example.com
X-Origin-Host: [::1]:7000
```