Я запускаю сценарий autossh, используя выскочку для туннелирования ssh / перенаправления портов в мою базу данных postgresql. Это выглядит так:
# Remote server role: database-master
# Remote hostname: srv-08.aa.com
# Local/remote port: 5432
# autossh startup Script http://www.async.fi/2013/07/autossh-with-ubuntu-upstart/
description "autossh tunnel for role database-master to srv-08.aa.com:5432"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [016]
respawn
respawn limit 5 60 # respawn max 5 times in 60 seconds
exec autossh \
-M 0 \
-N \
-L 5432:localhost:5432 \
-o "ServerAliveInterval=60" \
-o "ServerAliveCountMax=3" \
-o "BatchMode=yes" \
-i /home/the_user/.ssh/id_rsa \
the_user@srv-08.aa.com
В целом переадресация работает хорошо. Однако иногда, например, когда удаленный сервер перезапустил службу postgresql, случается, что туннель становится бесполезным (не может подключиться через него) и в /var/log/upstart/autossh-master-db-tunnel.log
Я вижу следующую ошибку:
channel 2: open failed: administratively prohibited: open failed
channel 2: open failed: administratively prohibited: open failed
channel 2: open failed: administratively prohibited: open failed
channel 2: open failed: administratively prohibited: open failed
channel 2: open failed: administratively prohibited: open failed
channel 2: open failed: administratively prohibited: open failed
Это продолжается, пока я не сделаю sudo restart autossh-master-db-tunnel
потом все снова работает.
Что не так, и как это исправить? Или вначале поумнее?