Я пытаюсь автоматически запустить SSH-туннель к моему серверу при загрузке из окна Ubuntu. У меня есть коробка ubuntu, которая установлена на 18-колесном автомобиле и подключена к сети за воздушной картой. В коробке находится база данных mysql, которую я пытаюсь реплицировать при подключении карты aircard. Поскольку я никогда не могу быть уверен в своем IP-адресе и в том, сколько или какие маршрутизаторы я использую, я подключен к своему серверу репликации с помощью SSH-туннеля. Я получил это с помощью следующей команды:
ssh -R 3307:localhost:3307 myuser@myserver.com
Теперь я бы хотел, чтобы это запускалось всякий раз, когда коробка находится, и всегда был в живых, поэтому я установил auto-ssh и настроил этот небольшой скрипт:
ID=xkenneth
HOST=erdosmiller.com
AUTOSSH_POLL=15
AUTOSSH_PORT=20000
AUTOSSH_GATETIME=30
AUTOSSH_DEBUG=yes
AUTOSSH_PATH=/usr/bin/ssh
export AUTOSSH_POLL AUTOSSH_DEBUG AUTOSSH_PATH AUTOSSH_GATETIME AUTOSSH_PORT
autossh -2 -fN -M 20000 -R 3307:localhost:3306 ${ID}@${HOST}
Я пробовал поместить этот скрипт в /etc/init.d/ и использовать команду post-up в / etc / network / interfaces, а также поместить его в /etc/network/if-up.d/. В обоих случаях скрипт запускается при загрузке, но туннель не устанавливается правильно. Скрипт работает при ручном запуске.
Если он работает правильно, но не подключается, я подозреваю, что он забегает вперед и не ждет подключения к сети. Попробуйте отложить туннель, добавив сон в начале скрипта. sleep 60
, вероятно, справится со своей задачей, не зная, как быстро устанавливается ваше соединение.
Я подозреваю это, потому что autossh сдается, если первая попытка не удалась. Из README:
If the ssh session fails with an exit status of 1 on the very first
try, autossh will assume that there is some problem with syntax or
the connection setup, and will exit rather than retrying;
Обратите внимание, что здесь также говорится, что вы можете установить AUTOSSH_GATETIME
до 0, чтобы отключить это поведение.
При запуске скрипта вы вводите пароль вручную? Если это так, вам придется настроить вход без пароля с помощью ключей SSH.