If I do a remote port forward, a la -R 3690:localhost:3690 when a binding already exists on the port on the remote host, I get this warning:
Warning: remote port forwarding failed for listen port 3690Is there a way to have ssh fail (i.e. exit with a nonzero return code), rather than just emit a warning?
22 Answers
Run
ssh -o ExitOnForwardFailure=yes ...or put
ExitOnForwardFailure yesinto ~/.ssh/config. See man ssh_config for details.
I use bash script on the target host to make sure the forwarding was opened correctly. The SSH connection will run this and exit if there's a problem with the port forwarding, e.g.
client side script: ( this uses .ssh/config for port forwarding settings )
#!/bin/bash
while true; do echo -n starting at : " date ssh user@server bin/sshloop.sh echo "got back, sleeping 17 " sleep 17
done server side script ( bin/sshloop.sh )
#!/bin/bash
while true; do echo $(date)" : SSH Reverse 1090:80, 1232:22 From Server to Client" sleep 17 if ! netstat -an | grep -q ":::1090 " ; then echo "1090 forward missing, bailing out" exit fi
doneMaybe even run the client side script under screen with -dmS
3