autossh
- это инструмент (включенный в репозитории Ubuntu), который может автоматически переподключать сеанс SSH. Он может проверить через отдельный канал, если данные все еще передаются должным образом, и повторно подключить туннель:
Вот хороший How-To:
http://pierre.linux.edu/2010/05/setting-up-a-permanent-ssh-tunnel-between-2-servers/
Это может быть объединено с инструментом daemon
, чтобы работать в фоновом режиме.
Комплексное решение:
aptitude install autossh daemon
В /usr/local/bin/autossh
#!/bin/bash
AUTOSSH_POLL=600
AUTOSSH_PORT=20000
AUTOSSH_GATETIME=30
AUTOSSH_LOGFILE=autossh.log
AUTOSSH_DEBUG=yes
AUTOSSH_PATH=/usr/bin/ssh
HOST=example.com
USER=tunnel
autossh -M $AUTOSSH_PORT -N -L ... -R ... $USER@$HOST
Переадресация портов должна быть добавлена вместо "...". Фактически все, что после -M $AUTOSSH_PORT
- это параметры SSH.
И в начале /etc/rc.local
добавить
daemon -n autossh /usr/local/bin/tunnel