I have two machines,
Client and Server.
Client (who is behind a corporate firewall) opens a reverse SSH tunnel to Server, which has a publicly-accessible IP address, using this command:
ssh -nNT -R0:localhost:2222
[email protected]
In OpenSSH 5.3+,
the 0 occurring just after
the -R means "pick an available port" rather than explicitly calling for one.
The reason I'm doing this is because I don't want to pick a port that's already in use. In truth, there are actually many Clients out there that need to set up similar tunnels.
The problem at this point is that
the server
does not know which
Client is which. If we want to connect back to one of these Clients (via localhost) then how do we know which port refers to which client?
I'm aware that ssh reports
the port number to
the command line when used in
the above manner. However, I'd also like to use autossh to keep
the sessions alive. autossh runs its child process via fork/exec, presumably, so that
the output of
the actual ssh command is lost in
the ether.
Furthermore, I can't think of
any other way to get
the remote port from
Client. Thus, I'm wondering if there is a way to determine this port on Server.
One idea I have is to somehow use /etc/sshrc, which is supposedly a script that runs for every connection. However, I don't know how one would get
the pertinent information here (perhaps
the PID of
the particular sshd process handling that connection?) I'd love some pointers.
Thanks!