How to make ssh fail if port forwarding fails
I have a bash script that runs ssh to create a port forward, using a command like this:
ssh -N -i keyfile -L 1000:localhost:22 *remote_ip*
There are occasions where the listen port may be busy, so this command gives the error:
channel_setup_fwd_listener: cannot listen to port: 1000
Could not request local forwarding.
However, the ssh connection remains up and the ssh command blocks. How can I make ssh actually fail when this occurs, so my script can handle it?
Unfortunately, I also need to support this on Solaris (Intel), and the ssh command there doesn't support the ExitOnForwardFailure option - any ideas in this case?
If you check the ssh man page, you'll find there is a config option called ExitOnForwardFailure and you can specify it on the command line by adding:
-o "ExitOnForwardFailure yes"
All the ssh config options are described in the ssh_config and sshd_config man pages. If you find the option is not supported, you may have to upgrade to a newer version of ssh.
Good Luck.
You can also add ExitOnForwardFailure yes
into your '~/.ssh/config'
file.
Create one if you haven't got one.
Make sure the correct user owns the file.
Restart your ssh service sudo service ssh restart
on unbuntu.