Сделать неудачный SSH вперед фатальной ошибкой

У меня есть сценарий, который подключается к удаленному хосту для репликации некоторых файлов через SSH. Я должен подключиться к демону rsync, прослушивая порт 873. Для этого у меня такая конфигурация ssh.

Host blah LocalForward 10873 127.0.0.1:873 Hostname 10.2.4.1 

К сожалению, из-за сроков этого скрипта существует небольшая вероятность, что иногда, когда он пытается установить сеанс SSH, другой похожий скрипт будет иметь порт, открытый для другого хоста.

Если я подключаюсь, когда открыт другой сеанс ssh, я получаю очевидное сообщение « Адрес уже используется» .

 me@local:~$ ssh blah bind: Address already in use channel_setup_fwd_listener: cannot listen to port: 10873 Could not request local forwarding. Linux remote 2.6.26-2-amd64 #1 SMP Tue Jan 25 05:59:43 UTC 2011 x86_64 motd... remote:~$ 

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

  • Выход скрипта из другого скрипта через SSH
  • Передача изображения докеров на несколько серверов без докерной машины
  • Установить путь по умолчанию для входа в конфигурацию ssh
  • Что такое SSH_TTY и SSH_CONNECTION?
  • Почему чтение с ошибкой конвейера в сеансе ssh?
  • Включите вход в консоль tty, пока «Запуск задания запущен» (прекратите работать навсегда, предотвращая выключение)
  • Как НЕ сохранить разрешение при использовании scp
  • Разница между «локальным переадресацией портов» и «динамической переадресацией портов»?
  • One Solution collect form web for “Сделать неудачный SSH вперед фатальной ошибкой”

    Для него есть опция конфигурации ssh (из ssh_config(5) ):

    ExitOnForwardFailure
    Указывает, должен ли ssh (1) прекратить соединение, если он не может настроить все запрошенные динамические, туннельные, локальные и удаленные пересылки портов. Аргумент должен быть «да» или «нет». По умолчанию используется “ no ''.

    Поэтому в вашей конфигурации ssh вы можете добавить:

     ExitOnForwardFailure yes 

    Или из командной строки:

     $ ssh -o ExitOnForwardFailure=yes blah 
    Linux и Unix - лучшая ОС в мире.