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?
Cours
ssh -o ExitOnForwardFailure=yes ...
ou mettre
ExitOnForwardFailure yes
dans ~/.ssh/config
. Voir man ssh_config
Pour plus de détails.
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