Unencrypted equivalent of SSH reverse proxy

I'm looking for an equivalent of this:

ssh -R 8888:10.0.0.2:8888 100.101.102.103

ie. make the service running on port 8888 on the local machine (10.0.0.2) look like a locally running service on a remote machine (100.101.102.103).

However, I don't want the encryption overhead of ssh, since the service in question is https and is thus already encrypted.

Can anyone suggest a tool to do this? Note that the direction of the initiation is important here - ie. it's the equivalent of a reverse tunnel. The local machine, where the service is running, is on a private network and not directly visible to the remote machine; the remote machine has a public IP though.

  • unix (OS X and Linux) on each end
  • I have full access to both machines

A pair of netcat sessions would fit the bill, I guess.

man nc


Just set ssh's encryption cypher to none.

ssh -c none -R 8888:10.0.0.2:8888 100.101.102.103

I have used rinetd for this in the past with great success.

rinetd is a very small, stable, and simple program that listens for incoming connections and forwards them, the configuration is really simple

# bindadress    bindport  connectaddress  connectport
1.2.3.4         80        4.3.2.1         80
1.2.3.4         443       4.3.2.1         443

There is also a program called "stone" that can do the same: Example... http forward from the gateway to an internal machine (1.2.3.4):

$ stone 1.2.3.4:80 80 

do not forget socat, the swiss army knife of network forwarders ;)

http://www.dest-unreach.org/socat/


An inetd combined with netcat should do the trick. See Forwarding Ports, although xinetd may be a better choice these days.