In the environment I work in, we use tunnels to SSH to various servers. For example, I'll 'ssh -p XXXXX username@localhost' to reach the server.
If the port was always the same, I could do this, and I'd be done:
Host somehost
User bryan
Hostname localhost
Port 12345
ProxyCommand ssh -p 2218 [email protected] -W %h:%p
However, the port used can and will change if the tunnel goes down and comes back up. This isn't something I have the ability to change - it's built into the infrastructure. So, I wrote a program to find the current port. But I don't know how to either:
a) Run that program and use the output for the %p variable; or b) Run a cron job on first.server.com to write out a text file with the port in it, or set an environment variable, or something.
In effect, I want to do this. Is it possible?
Host somehost User bryan Hostname localhost Port `sh get_port_for_somehost.sh` ProxyCommand ssh -p 2218 [email protected] -W %h:%p
The only thing I can think of right now is to run a program on my laptop which rewrites my .ssh/config after going and querying what the ports currently are, but I'd prefer not to do that.
Port
directive and then using%p
in theProxyCommand
, if specifyingPort
is a problem? Why not usessh -W %h:$(get_port_for %h) …
as theProxyCommand
?