Executar
ssh -o "ExitOnForwardFailure yes" ...
ou coloque
ExitOnForwardFailure yes
em ~/.ssh/config
. Veja ssh_config(1)
usando man
para detalhes.
Se eu fizer uma porta remota, a la -R 3690:localhost:3690
quando já existir uma ligação na porta do host remoto, recebo este aviso:
Warning: remote port forwarding failed for listen port 3690
Existe uma maneira de ter o ssh falhar (ou seja, sair com um código de retorno diferente de zero), em vez de apenas emitir um aviso?
Eu uso o script bash no host de destino para garantir que o encaminhamento foi aberto corretamente. A conexão SSH executará isso e sairá se houver um problema com o encaminhamento de porta, por exemplo,
script do lado do cliente: (isso usa .ssh / config para configurações de encaminhamento de porta)
#!/bin/bash
while true; do
echo -n starting at : "
date
ssh user@server bin/sshloop.sh
echo "got back, sleeping 17 "
sleep 17
done
script do lado do servidor (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
done
Talvez até execute o script do lado do cliente na tela com -dmS
Tags ssh port-forwarding exit-code