Можно ли сделать сбой SSH при сбое переадресации порта?
Если я делаю удаленный порт вперед, а-ля -R 3690:localhost:3690
когда привязка уже существует на порту на удаленном хосте, я получаю это предупреждение:
Warning: remote port forwarding failed for listen port 3690
Есть ли способ вызвать ошибку ssh (т.е. выйти с ненулевым кодом возврата), а не просто выдать предупреждение?
2 ответа
Решение
Бежать
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