Skip to content

ablaternae/http-tunnel-ssh

Repository files navigation

http tunnel to localhost over tls

тоннель на локалхост быстро, бесплатно и полный опенсорс без регистрации и смс

тоннель создается через ssh подключчение к srv.us по ключу

вариант для ленивых

podman-compose -f docker-compose.srv-us.yml up запускает тоннель с ключом внутри контейнера. внешний адрес типа https://example.srv.us будет написан внизу информационного вывода, другим концом тоннель приведёт по-умолчанию на 127.0.0.1:8081

переменные окружения

внешние

SRV_DEBUG=false
SRV_HOST=127.0.0.1
SRV_PORT=8081
SRV_KEY_DIR=srv_us
SRV_KEY_FILE=srv_us_ed25519
SRV_KEY_PHRASE=""
SRV_KEY_COMMENT="$USER@$SRV_HOST"
SRV_NET_MODE=bridge

пример запуска SRV_HOST=192.168.1.111 SRV_PORT=9090 podman-compose -f docker-compose.srv-us.yml up

внутренние

если подключиться к работающему контейнеру, переменнные будут иметь вид

DEBUG
HOST
PORT
KEY_FILE
KEY_COMMENT
NET_MODE

продвинутый вариант с постоянным адресом

адрес вычисляется на основе переданного ключа. о необходимости создания ключа напоминает подсказка каждый раз при подключении ssh srv.us

ключ

для создания ключа ssh-keygen -t ed25519 -f ~/.ssh/srv_us_id_ed25519 -N '' как понятно, требуется:

  • пакет openssh или аналогичный
  • указать путь до файла, имя srv_us_id_ed25519 подставляется в скриптах по-умолчанию, но если выбрали другое, не забывайте поправить переменные
  • тип ключа ed25519 требует сервер, ключевая фраза и комментарий опциональны

в консоли

этот пункт для примера работы

  • нужен запущенный агент eval $(ssh-agent -s)
  • и загруженный файл ключа ssh-add ~/.ssh/$KEY_FILE
  • затем поднимаем тоннель ssh srv.us -R 1:localhost:9999 или несколько ssh srv.us -R 1:localhost:9999 -R 2:...

в контейнерах

для чего всё это и затевалось

  • создаём ключ на хосте (см. выше)
  • запускаем podman-compose -f docker-compose.srv-us.hostkey.yml up контейнер с особенностями:
    • перезапускается при падении
    • чтобы использовать .env из текущего каталога запуска, раскомментируйте пару строк
    • имя контейнера srvus-tunnel-${PORT}, хостнейм во внутренней сети докера srv_us
    • используется файл ключа ~/.ssh/${KEY_FILE}, где по-умолчанию KEY_FILE=srv_us_ed25519
    • network_mode выставлен по-умолчанию host

то есть, подгрузив этот контейнер во внутреннюю сеть своих контейнеров, вы можете предоставить (тестовый) доступ из больших интернетов, и каждый раз при открытии тоннеля внешний адрес будет одинаковый

разные разности

  • build.sh собирает локальный контейнер с внедрённым ключом
  • однострочник для джедаев консоли и скрина screen -Adm bash -c "until ssh srv.us -R 1:localhost:8081 ; do echo Restarting... ; done" ;
  • файл localhost.sh из репозитория https://github.com/JoyGhoshs/Localhost.run/ , документация https://Localhost.run

About

Yet another solution to expose any HTTP server to the Internet through a tunnel. Stable URLs derived from your SSH key.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors