Проверить и автоматически восстановить обратный туннель 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/.

Другие вопросы по тегам