34

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

Warning: remote port forwarding failed for listen port 3690

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

2 ответа2

55

Бежать

ssh -o "ExitOnForwardFailure yes" ...

или положить

ExitOnForwardFailure yes

в ~/.ssh/config . Смотрите ssh_config(1) используя man для деталей.

1

Я использую скрипт 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .