2017-02-21 15 views
0

У меня есть сценарий bash с использованием ssh для удаленного доступа, так что я могу войти в систему, на которой запущен скрипт. Я использую скрипт, потому что периодически сеть нуждается в каком-то ауте. Если ssh не удастся, я повторю попытку. Сценарий в основном это:Почему ssh не выходит из строя при удаленной прямой ошибке?

while [ 1 ]; do 
    authentication 
    ssh -N -v -R 9999:localhost:22 [email protected]$remote_ip 
done 

Проблема заключается в SSH не выходит при удаленной передней неудачи, как показано ниже:

debug1: Remote: Forwarding listen address "localhost" overridden by server GatewayPorts 
debug1: remote forward failure for: listen 9999, connect localhost:22 
Warning: remote port forwarding failed for listen port 9999 
debug1: All remote forwarding requests processed 

Неудача из-за этого:

debug1: server_input_global_request: tcpip-forward listen localhost port 9999 
debug1: Local forwarding listening on 0.0.0.0 port 9999. 
bind: Address already in use 
channel_setup_fwd_listener: cannot listen to port: 9999 

предыдущая сессия еще не завершена, и порт используется.

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

ответ

0

Ваш SSH сессия имеет тайм-аут на стороне сервера, поэтому при попытке восстановить предыдущее соединение все еще прослушивает порт 9000.

Используйте openvpn, вместо этого Hacky раствора.