Posso fazer com que o SSH falhe quando um encaminhamento de porta falhar?

31

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?

    
por Matt Joiner 31.10.2011 / 02:13

2 respostas

52

Executar

ssh -o "ExitOnForwardFailure yes" ...

ou coloque

ExitOnForwardFailure yes

em ~/.ssh/config . Veja ssh_config(1) usando man para detalhes.

    
por 31.10.2011 / 21:41
1

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

    
por 04.11.2011 / 12:10