I'm looking for an equivalent of this:

ssh -R 8888:

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

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
  • 1
    Google for: "tcp gender change". An article on Wikipedia: en.m.wikipedia.org/wiki/TCP_Gender_Changer. Some tools which do that on Linux: tgcd, revinetd
    – Fabio
    Commented Nov 29, 2017 at 15:34

7 Answers 7


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

man nc

  • It would be nice to see an example of how to do that.
    – Fabio
    Commented Nov 26, 2017 at 7:12

Just set ssh's encryption cypher to none.

ssh -c none -R 8888:
  • Not possible on most platforms without the use of a third-party patch.
    – Dan Carley
    Commented Jun 16, 2009 at 8:21
  • Probably just as well, it really does nerf the secure bit of ssh.
    – Haakon
    Commented Jun 16, 2009 at 12:48

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


  • Nice ! I didn't know it.
    – sebthebert
    Commented Jun 17, 2009 at 17:14
  • It would be nice to see an example of how to use it to achieve that.
    – Fabio
    Commented Nov 26, 2017 at 7:12

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         80         80         443         443

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

$ stone 80 

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


You could use some sort of firewall rule? Something in iptables to redirect one port to another?


What you are trying to use smells like NAT Port Forwarding to me. One iptables rules and it's done.

You must log in to answer this question.