I have a VPN separating two nodes, one which can access internet at large, one which cannot. I can VPN from the internet-accessing node (here called nodeA) through an intermediary server (here called nodeB) to nodeC which I would like to run another geth full node on.

I can currently do things like VNC forwarding by running a command like:

ssh -v -N -L 5900:nodeC:5900 user@nodeB

From what I understand, this connects from nodeA to nodeB and then sets up a relay between 5900 on nodeA targeted to nodeC's 5900 such that when I run vnc on nodeA and target it to localhost:5900, I get a connection.

What do I need to do to get nodeC able to run a geth node which talks to nodeA's running and operational full node?

Thank you.

2 Answers 2


I don't have an exact solution for SSH, but there is an alternative solution to your problem I'd like to share with you.


ZeroTier delivers VPN, SDN, and SD-WAN capabilities with a single system. Network almost any kind of device or application as if the entire planet is a single cloud region.

You can create an SDN (Software Defined Network) and include all your hosts into it. They will share the same subnet. I've done it before and it worked well.

  • 1
    Is a good possibility, but the issue being that the nodeC cannot speak to internet at large means that there will be no access to zerotier root nodes which leaves me where I started unfortunately.
    – X Y
    Commented Jun 4, 2017 at 4:04

The default port used by geth to intercommunicate between nodes is 30303. One you have stablished the tunnel using ssh between the nodes, you have to let the nodes know about each other. See the documentation at http://ethdocs.org/en/latest/network/connecting-to-the-network.html, on how to connect nodes.

  • The specifics of the tunneling requires clarification. e.g. I cannot tunnel 30303:localhost:30303 because 30303 is already bound by the geth node running on nodeA. likewise, nodeC cannot even reach anywhere to talk to a bootnode to get the blockchain bootstrapped.
    – X Y
    Commented Jun 4, 2017 at 4:27
  • You have to check ssh documentation for the correct syntax, but you have map the remote port 30303, to a different local port. Another option is to use differents ports for each node.
    – Ismael
    Commented Jun 4, 2017 at 23:15
  • unfortunately it is clearly not that simple, I have tried performing an ssh forward for port 30303 but it doesn't accomplish anything. It seems that I must run my own bootnode and point the nodeC at nodeA, but it cannot reach.
    – X Y
    Commented Jun 5, 2017 at 0:50
  • Did you try with -R instead of -L in the ssh command line?
    – Ismael
    Commented Jun 5, 2017 at 0:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.