Можно ли сделать сбой SSH при сбое переадресации порта?

Если я делаю удаленный порт вперед, а-ля -R 3690:localhost:3690 когда привязка уже существует на порту на удаленном хосте, я получаю это предупреждение:

Warning: remote port forwarding failed for listen port 3690

Есть ли способ вызвать ошибку ssh (т.е. выйти с ненулевым кодом возврата), а не просто выдать предупреждение?

2 ответа

Решение

Бежать

ssh -o "ExitOnForwardFailure yes" ...

или положить

ExitOnForwardFailure yes

в ~/.ssh/config, Увидеть ssh_config(1) с помощью man для деталей.

Я использую скрипт bash на целевом хосте, чтобы убедиться, что переадресация была открыта правильно. Соединение SSH запустит это и завершит работу, если есть проблема с переадресацией порта, например

скрипт на стороне клиента: (для настройки переадресации портов используется.ssh/config)

#!/bin/bash    

while true; do
    echo -n starting at : "
    date
    ssh user@server bin/sshloop.sh
    echo "got back, sleeping 17 "
    sleep 17
done 

серверный скрипт ( 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

Может быть, даже запустить сценарий на стороне клиента под экраном с -dmS

Другие вопросы по тегам