Oh, man.... :-)
It's not that difficult. Look.... Using the 3 computers of your example:
Machine 1 is connected to the internet through a nated connection.
Machine 2 is connected to the internet through another nated connection. No relation between them. They can't 'see' each other.
Machine 2 sets a R tunnel so that its port 22 appears as port X on machine 3
Machine 1 sets a L tunnel so that machine 3's port X appears as its port Y, in other words Machine 1's port 22 appears as machine 2's port Y.
Users connects (on machine 1) its SSH client to localhost port Y (effectively using service SSH from machine 2).
Read the article with attention. You'll see it's not that tricky.