Comments 27
Ого, спасибо за статью. Честно говоря, в закладках лежит уже несколько статей про SSH туннели, но только ваша позволила мне полностью понять, как они работают :)
Расскажите, пожалуйста: допустим, я хочу развернуть приложение на сервере у себя дома, без статичного IP. SSH-соединения имеют свойство разрываться. Соответственно, туннель тогда тоже перестанет работать. Какие есть хорошие решения этой проблемы?
Ngrok
ниже в комментах предложили ngrok, но я бы поднимал через autossh (писал про это тут https://amorev.ru/autossh/) У меня так несколько туннелей крутится на постоянной основе
Отвечу здесь же, потому что использую похожее решение.
Я использую или systemd unit, который перезапускается при падении туннеля с обычным ssh, не auto, или баш скрипт, который в просто в цикле дергает ssh с нужными параметрами. Но в случае с баш скриптом его надо руками запускать после перезагрузки системы.
Я не силён в ssh, но, беглый гугл говорит что можно использовать mac адрес устройства
Если некритично время разрыва, можно и в крон команду положить
крон не подойдет. конфликтовать будет. Выше написать про autossh. У меня годами крутятся туннели так)
А у меня годами через крон :)
nc -z 0 12345 || ssh -f -N -L 12345:127.0.0.1:12345 user@server
Sish + autossh
Не могли бы вы, пожалуйста, дополнить, где вы запускаете эти команды, на ноутбуке или на удаленном сервере?
А то что-то к концу чтения все потихоньку смешалось. Так и не понял, почему для примера с кафе нельзя использовать прямой туннель только поменять местами параметры..
И по-моему в примере с обратным туннелем опечатка в номере порта.
Использую обратный SSH тоннель для доступа в домашнюю сеть без белого IP.
Домашний сервер держит подключение к внешнему, на бесплатном хостинге.
Ну и дублируется с помощью Tailscale, на случай если всё упало.
да! я таким же образом себе внешний доступ к некоторым сервисам делаю
Да, штука годная даже с Tailscale at home(Pricing per active user/month $0)
Up to 3 users w/ public domain, Up to 100 devices
Больше года пользуюсь Headscale:
Headscale - an open source implementation of the Tailscale control server
https://hub.docker.com/r/headscale/headscale
https://github.com/juanfont/headscale
У меня тоже ssh для доступа в локалку, только через ddns, сервер далеко, задержка большая, в планах развернуть wg на локальном сервере rdp over ssh показал себя не очень
А можно узнать что за бесплатный хостинг и какое решение в данном случае?
Можно
https://www.oracle.com/cloud/free/
Домашний сервер держит открытый обратный SSH тоннель в облачный (у которого есть белый IP). И тогда можно открыть соединение в облачный и оттуда попасть в домашнюю сеть...
Читаю подобные статьи, потому что не запоминается, редко использую. И никогда нет описания как оформить эти команды, да с дополнительными параметрами подключения в .ssh/config. А преимуществ такой записи много, это и сокращение до ssh S3 и склерозник на будущее. Забыл - заглянул в config. Если эту тему прокачали, и часто используете, может допишете? Полезная же, и никак не освещённая.
Регулярно пользуюсь config. Даже пытался написать bash-completion на базе .ssh/config
но не удалось:)
Не bash конечно, но как то пользовался этим https://github.com/sunlei/zsh-ssh - довольно удобно
SSH-Туннели простыми словами