Проверить и автоматически восстановить обратный туннель SSH
Я устанавливаю обратный туннель с $ ssh -fN -R 19999:localhost:22 -i aws-mycert.pem ubuntu@my.dyndns.com
и нужно убедиться, что он работает и работает даже после сброса сервера. Как я могу проверить соединение в скрипте cron, который затем автоматически восстанавливает соединение при необходимости?
1 ответ
Простой способ сделать это - использовать Netcat. Команда nc -z localhost 19999
проверит, есть ли что-то в локальном порту 19999 прослушивания, чтобы вы могли использовать: nc -z localhost 19999 || ssh -fN -R 19999:localhost:22 -i aws-mycert.pem ubuntu@my.dyndns.com
воссоздать туннель, если это необходимо.
Однако это только проверяет, что туннель работает, но это может быть устаревшим. Лучшее решение - использовать autossh. Просто установите его на свой компьютер и используйте:
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -fN -R 19999:localhost:22 -i aws-mycert.pem ubuntu@my.dyndns.com
Затем вам нужно просто запустить эту команду при запуске сервера, что зависит от вашего дистрибутива.
Более подробную информацию об использовании autossh вы можете найти по адресу https://www.everythingcli.org/ssh-tunnelling-for-fun-and-profit-autossh/.