Бежать
ssh -o "ExitOnForwardFailure yes" ...
или положить
ExitOnForwardFailure yes
в ~/.ssh/config
. Смотрите ssh_config(1)
использование man
для деталей.
Если я делаю переадресацию удаленного порта, например, -R 3690:localhost:3690
когда привязка к порту на удаленном хосте уже существует, я получаю это предупреждение:
Warning: remote port forwarding failed for listen port 3690
Есть ли способ вызвать ошибку ssh (то есть выйти с ненулевым кодом возврата), а не просто выдать предупреждение?
Бежать
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