web-dev-qa-db-fra.com

Puis-je faire échouer SSH quand un transfert de port échoue?

Si je fais un port distant vers l'avant, une la -R 3690:localhost:3690 Lorsqu'une liaison existe déjà sur le port de l'hôte distant, je reçois cet avertissement:

Warning: remote port forwarding failed for listen port 3690

Existe-t-il un moyen d'échouer par SSH (c'est-à-dire une sortie avec un code de retour non nul), plutôt que d'émettre un avertissement?

40
Matt Joiner

Cours

ssh -o ExitOnForwardFailure=yes ...

ou mettre

ExitOnForwardFailure yes

dans ~/.ssh/config. Voir man ssh_config Pour plus de détails.

67
Andrew Schulman

J'utilise un script Bash sur l'hôte cible pour vous assurer que le transfert a été ouvert correctement. La connexion SSH fonctionnera et quittera s'il y a un problème avec le transfert de port, par ex.

script côté client: (Ceci utilise .sSH/Config pour les paramètres de transfert de port)

#!/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 côté serveur (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

Peut-être même exécuter le script côté client sous l'écran avec -DMS

1
Antti Rytsölä