У меня есть сценарий 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.