Назад | Перейти на главную страницу

Как отключить ssh при сбое переадресации портов

У меня есть сценарий bash, который запускает ssh для создания переадресации порта с помощью такой команды:

ssh -N -i keyfile -L 1000:localhost:22 *remote_ip*

В некоторых случаях порт прослушивания может быть занят, поэтому эта команда выдает ошибку:

channel_setup_fwd_listener: cannot listen to port: 1000
Could not request local forwarding.

Однако соединение ssh остается активным, и команда ssh блокируется. Как я могу заставить ssh действительно перестать работать, когда это происходит, чтобы мой скрипт мог с этим справиться?

К сожалению, мне также необходимо поддерживать это в Solaris (Intel), а команда ssh там не поддерживает параметр ExitOnForwardFailure - какие идеи в этом случае?

Если вы проверите страницу руководства ssh, вы обнаружите, что есть опция конфигурации ExitOnForwardFailure, которую вы можете указать в командной строке, добавив:

-o "ExitOnForwardFailure yes"

Все параметры конфигурации ssh описаны на страницах руководства ssh_config и sshd_config. Если вы обнаружите, что эта опция не поддерживается, возможно, вам придется перейти на более новую версию ssh.

Удачи.

Вы также можете добавить ExitOnForwardFailure yes в ваш '~/.ssh/config' файл.

Создайте его, если у вас его нет.

Убедитесь, что файл принадлежит правильному пользователю.

Перезагрузите службу ssh sudo service ssh restart на unbuntu.